2011-12-08 7 views
1

Fitbitアプリを作成しようとしています。そのため、example Twitter Oauth appを修正してfitbitからデータを取得しました。私は今に実行しています問題はランダムに、私は次のエラーを取得するということです。Android Oauthはランダムに認証エラー「nonce_used」を返します

ことの興味深い部分は、私が研究し、それが「nonce_used言う「oauth_problem = 『nonce_used』」です
12-08 18:36:46.274: W/DefaultRequestDirector(439): Authentication error: Unable to respond to any of these challenges: {oauth=WWW-Authenticate: OAuth realm="http%3A%2F%2Fapp4int.fitbit.com", oauth_problem="nonce_used"} 
12-08 18:36:46.284: W/System.err(439): org.apache.http.client.HttpResponseException: Unauthorized 
12-08 18:36:46.294: W/System.err(439): at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:71) 
12-08 18:36:46.294: W/System.err(439): at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:59) 
12-08 18:36:46.294: W/System.err(439): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657) 
12-08 18:36:46.294: W/System.err(439): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627) 
12-08 18:36:46.294: W/System.err(439): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616) 
12-08 18:36:46.305: W/System.err(439): at org.knoesis.healthcare.HealthcareAppActivity$GetCredentialsTask.doInBackground(HealthcareAppActivity.java:149) 
12-08 18:36:46.305: W/System.err(439): at org.knoesis.healthcare.HealthcareAppActivity$GetCredentialsTask.doInBackground(HealthcareAppActivity.java:1) 
12-08 18:36:46.305: W/System.err(439): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
12-08 18:36:46.305: W/System.err(439): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
12-08 18:36:46.334: W/System.err(439): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
12-08 18:36:46.444: W/System.err(439): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
12-08 18:36:46.444: W/System.err(439): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
12-08 18:36:46.444: W/System.err(439): at java.lang.Thread.run(Thread.java:1096) 

:oauth_nonce以前のリクエストで値が使用されたため、現在は使用できません。どの値がoauth_nonce値であり、どのように新しい値を使用するのですか?

こちらのコードをここに掲載すると便利です。

答えて

2

OAuthノンスは、有効なリクエストが1回しか受け付けられないようにすることで、再生攻撃を防止するために使用されます。

私はOAuthを使いこなしてからしばらくしていましたが、ランダムに生成された文字列を含める必要があると思います(要求されたユーザー名に連結されたシステム時刻とMD5が結果をハッシュしたと思います)リクエストごとに明らかに、これは署名生成コードに組み込む必要があります。

+0

ありがとうございました。 – Michaeldcooney

関連する問題