使用 Cordova 和 Angularjs 登录 Twitter:401 未经授权的错误

Posted

技术标签:

【中文标题】使用 Cordova 和 Angularjs 登录 Twitter:401 未经授权的错误【英文标题】:Twitter Login with Cordova and Angularjs: 401 unauthorized error 【发布时间】:2016-04-02 04:56:36 【问题描述】:

用户通过此链接从 Twitter 登录后,我正在尝试获取用户详细信息 - https://api.twitter.com/1.1/account/verify_credentials.json

为此,我首先要求 oauth_token,第二步我要求 签名,最后我尝试使用 oauth_token 和签名获取用户数据。在最后一次通话中,我收到 “401 未授权错误”

我用过这个cordova插件-http://ngcordova.com/docs/plugins/oauth/

我想为 androidios 生成 APK。我正在使用 cordova CLI 生成 apk。

这是我的代码 -

class TwitterLoginCtrl extends BaseCtrl
  @register 'TwitterLoginCtrl'

  @inject '$scope', '$ionicPopup', 'WtaLoading', '$ionicLoading','$cordovaOauth','$http','$cordovaOauthUtility'

  initialize: ->
    @$scope.twitterSignIn = @twitterSignIn

  twitterSignIn: =>
    alert 'Twitter Nisarg'
    @$cordovaOauth.twitter('[consumer key]','consumer secret').then ((result) =>
      console.log JSON.stringify(result)

      oauthObject =
        oauth_consumer_key: '[consumer key]'
        oauth_nonce: @$cordovaOauthUtility.createNonce(10)
        oauth_signature_method: 'HMAC-SHA1'
        oauth_timestamp: Math.round((new Date).getTime() / 1000.0)
        oauth_version: '1.0'
        oauth_token: result.oauth_token
      signatureObj = @$cordovaOauthUtility.createSignature('GET', 'https://api.twitter.com/1.1/account/verify_credentials.json', oauthObject, oauthObject)

      @$http(url: 'https://api.twitter.com/1.1/account/verify_credentials.json', method: 'GET' , params: angular.extend(oauthObject, oauth_signature: signatureObj.signature), format: "json"). then (data) => **// THIS CALL THROWS 401 UNAUTHORIZED ERROR**
        console.log JSON.stringify(data)
    ), (error) ->
      console.log error

编辑

@$cordovaOauth.twitter('[consumer key]','consumer secret').then ((result) =>

上面的电话给我这个结果=>


 "oauth_token":[access-token], 
 "oauth_token_secret":[access_token_secret], 
 "user_id":"4629415817", 
 "screen_name":"napster", 
 "x_auth_expires":"0"

每次我得到 x_auth_expires 时都在这里。还好吗?

【问题讨论】:

是的。我有答案。这是您的第一个应用程序吗?你的目标平台是什么?你在用CLI, SDK or Build吗?请在您的帖子中回答这些问题。并在此处回复,以便我知道您已回复。 我的目标平台是android和ios。为了立即调试,我构建了应用程序,然后安装在移动设备中并通过 eclipse 检查日志。我的电脑很慢,所以我没有使用模拟器。 请在您的帖子中提供所有答案。 请回答问题:这是您的第一个应用吗? 是的。这是我的第一个应用程序 你得到的是登录成功的答案。参见例如此链接:github.com/fightbulc/simplon_twitter 如何继续使用带有访问令牌的 api。 xauthexpires 为零,表示尚未过期 == ok! 【参考方案1】:

根据documentation

错误代码和响应 列出的 HTTP 状态代码表示,

当我提到 Twitter OAuth : Invalid or expired token [its NOT duplicate] 时,一旦你得到回调,用新的访问令牌再次初始化类。

【讨论】:

以上是关于使用 Cordova 和 Angularjs 登录 Twitter:401 未经授权的错误的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS/Cordova/Phonegap Ipad 3 和 Iphone 4s 不够快?

ionic+cordova+angularJs

使用 nodejs 8、angularjs、ionic3、cordova8 更新 cordova-android 6 到 9、cordova-ios 5 到 6

搭建 AngularJS+Ionic+Cordova 开发环境并运行一个demo

在多次文件请求后,Cordova-Angularjs 应用程序在 iPad 上停止

搭建 AngularJS+Ionic+Cordova 开发环境并运行一个demo