美文网首页
海外sdk开发篇之推特twitter授权登录

海外sdk开发篇之推特twitter授权登录

作者: fridayy_CWeitao | 来源:发表于2024-03-14 12:33 被阅读0次

    本文介绍安卓接入推特授权登录以及一些坑

    推特因为不再维护sdk,所以在根据文档接入的时候碰到了SSL Certificate Pinning Error,按照网上的修改注释源代码也会出现ssl相关的报错,

    也就是以下这段授权登录代码:

    TwitterAuthClient.authorize(activity, new Callback<TwitterSession>());

    所以后来采用的方案是用http请求推特的服务端,部分依赖sdk相关的接口。

    ____________________________________________________________________________________________________________________

    文档链接

    接入文档

    接口说明

    github的开源代码

    ____________________________________________________________________________________________________________________

    1.请求oauthToken和oauthTokenSecret

    首先需要准备推特的参数:ConsumerKey, ConsumerSecret

    在请求之前需要先准备好几个方法生成相关的参数:

    生成请求头Authorization值

    参考代码:com\twitter\sdk\android\core\internal\oauth\OAuth1aParameters.java

    可以参考它的重新写一个管理推特参数相关的单例。

    其中OAuth1aParameters需要设置的参数为:

    TwitterAuthConfig->new TwitterAuthConfig(ConsumerKey, ConsumerSecret)

    TwitterAuthToken->null

    callback->twittersdk://callback    //应该需要在后台也设置下

    method->POST

    url->https://api.twitter.com/oauth/request_token

    postParams->null

    http post请求头需要设置2个键值对:Content-TypeAuthorization

    String head = constructAuthorizationHeader(nonce, timestamp, signature);

    其中nonce,timestamp和signature参考示例代码中的getAuthorizationHeader()方法

    Content-Type:application/x-www-form-urlencoded

    Authorization:head 

    请求地址:https://api.twitter.com/oauth/request_token

    请求成功的话会返回oauth_token=xxx&oauth_token_secret=yyy,这两个值会在后面用到

    2.打开用户授权登录界面

    需要打开的url:https://api.twitter.com/oauth/authenticate?oauth_token=xxx

    打开后会在浏览器中显示一个推特用户授权登录的网页

    这里需要重写一个webview,实现webView.setWebViewClient,用户授权登录成功后会在shouldOverrideUrlLoading里返回一个url

    url中包含oauth_verifier的值,如果url里包含denied则说明是用户取消了,也可以中断后续的步骤

    3.获取校验登录用的值发给服务端验证登录

    类似第一步,OAuth1aParameters需要设置的参数为:

    TwitterAuthConfig->new TwitterAuthConfig(ConsumerKey, ConsumerSecret)

    TwitterAuthToken->new TwitterAuthToken(oauthToken, oauthTokenSecret)

    callback->twittersdk://callback    //应该需要在后台也设置下

    method->POST

    url->https://api.twitter.com/oauth/access_token

    postParams->null

    http post请求头需要设置3个键值对:Content-TypeAuthorization和Content-Length

    String head = constructAuthorizationHeader(nonce, timestamp, signature);

    其中nonce,timestamp和signature参考示例代码中的getAuthorizationHeader()方法

    String body = String.format("oauth_verifier=%s", oauthVerifier);    //这个是请求体中的值,不是请求头的,请求头只需要知道它的长度是几位的

    Content-Type:application/x-www-form-urlencoded

    Authorization:head 

    Content-Length:String.valueOf(body.length())

    请求地址:https://api.twitter.com/oauth/access_token

    请求成功的话会返回oauth_token=xxx&oauth_token_secret=yyy&user_id=zzz

    拿到这里的token、secret和uid后,就可以发给服务端去推特服务器那边校验结果,通过的话就可以回调给cp登录结果了

    完事收工!

    相关文章

      网友评论

          本文标题:海外sdk开发篇之推特twitter授权登录

          本文链接:https://www.haomeiwen.com/subject/bqcwzdtx.html