在flickr中的OAuth授权期间的401响应

时间:2015-01-15 16:17:53

标签: android oauth flickr flickrj

我开发了将照片备份到flickr的Android应用程序。

我多次遇到下一个问题: 有时我会在交换访问令牌的请求令牌期间收到401响应("响应代码:401,响应消息:未授权,错误:oauth_problem = token_rejected")而不是使用访问令牌的响应。

这个问题主要发生在我的网络连接不良时(当我起诉3G网络时)。

以下是显示此行为的日志:

2015-01-07 17:12:00,603 DEBUG [oauth.OAuthInterface]-[122] Getting Request Token with parameters: www.flickr.com/services/oauth/request_token [
Parameter [name=oauth_callback, value={MY_APP_NAME}-flickr://callback], 
Parameter [name=oauth_consumer_key, value={MY_CONSUMER_KEY}], 
Parameter [name=oauth_nonce, value=154099562370628], 
Parameter [name=oauth_signature_method, value=HMAC-SHA1], 
Parameter [name=oauth_timestamp, value=1420630920], 
Parameter [name=oauth_version, value=1.0], 
Parameter [name=oauth_signature, value=oVkmG/7nOoiO0P6Dm2j4Aql4lDs=]
] 

2015-01-07 17:12:01,695 DEBUG [oauth.OAuthInterface]-[136] 
Response: {oauth_token_secret={RESULT_OAUTH_TOKEN_SECRET}, oauth_callback_confirmed=true, oauth_token={RESULT_OAUTH_TOKEN}}

之后我在浏览器中为用户打开下一个url: url = m.flickr.com/services/oauth/authorize?oauth_token= {RESULT_OAUTH_TOKEN}& perms = write

授权后,我会收到下一个回调:

{MY_APP_NAME}-flickr://callback?oauth_token={RESULT_OAUTH_TOKEN}&oauth_verifier=59bbeb1cb3ffedca

使用验证者我发出下一个请求:

2015-01-07 17:12:47,043 DEBUG [flickrjandroid.REST]-[288] Send Post Input parameters [
Parameter [name=oauth_consumer_key, value={MY_CONSUMER_KEY}], 
Parameter [name=oauth_nonce, value=154146242657849], 
Parameter [name=oauth_signature_method, value=HMAC-SHA1], 
Parameter [name=oauth_timestamp, value=1420630967], 
Parameter [name=oauth_token, value={RESULT_OAUTH_TOKEN}], 
Parameter [name=oauth_verifier, value=59bbeb1cb3ffedca], 
Parameter [name=oauth_version, value=1.0], 
Parameter [name=oauth_signature, value=yZjgD6iKGxn4lzJVuZHnEaqWsHE=]] api.flickr.com:443/services/oauth/access_token

回复是:

响应代码:401,响应消息:未经授权,错误:oauth_problem = token_rejected

什么可能导致拒绝令牌? 在获得401响应后,我可以尝试使用相同的验证程序再次发出请求,否则这也将返回401响应?

此问题有时会发生,通常是在糟糕的互联网连接期间。 对于授权,我使用flickrj-android-2.1.1

1 个答案:

答案 0 :(得分:0)

这些是可以拒绝令牌的一些原因:

  • 请求令牌已用于交换访问令牌。
  • 请求令牌与消费者密钥不匹配。
  • 从消费者处收到的验证码无效。