使用 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/
我想为 android 和 ios 生成 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 不够快?
使用 nodejs 8、angularjs、ionic3、cordova8 更新 cordova-android 6 到 9、cordova-ios 5 到 6
搭建 AngularJS+Ionic+Cordova 开发环境并运行一个demo