私はAndroidアプリを開発しています。 Facebookのoffline_accessパーミッションが間もなく廃止されると、私はFacebook APIトークンを拡張するためにGraph APIを使用しようとしています。Androidアプリで更新されたFacebookトークンを取得するためのコードは何ですか?
https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN
上記のコードをAndroidアプリケーションに実装し、更新されたFacebookトークンを取得する方法を示す詳細なコードを誰でも提供できますか?
ありがとうございます。
アップデート2:
進捗(と思います)!私はしかし、ベースURLにあるFacebookのリクエストメソッドの結果はURL の先頭に追加された状態でので、代わりの
String refreshUrl = "https://graph.facebook.com/oauth/access_token?client_id=12345678910&client_secret=abcdefghijklmnopqrstuvwxyz&grant_type=fb_exchange_token&fb_exchange_token="+currentAccessToken;
完全なURLを使用して
は
String refreshUrl = "oauth/access_token?client_id=12345678910&client_secret=abcdefghijklmnopqrstuvwxyz&grant_type=fb_exchange_token&fb_exchange_token="+currentAccessToken;
を使用する必要があります{"エラー":{"メッセージ": "アプリケーションの検証エラーです。アプリケーションIDが無効です"、 "タイプ": "OAuthException"、 "コード":190}}
更新1:
これは私が試みたものです。コードは完了します。つまり、listernerのOnCompleteが呼び出されますが、応答に新しいアクセストークンまたは有効期限の値は含まれません。
void refreshWithGraph() {
AsyncFacebookRunner extendingAsyncRunner = new AsyncFacebookRunner(facebook);
Bundle parameters = new Bundle();
//the variable currentAccessToken is obtained after authorisation is complete using currentAccessToken = facebook.getAccessToken();
String refreshUrl = "https://graph.facebook.com/oauth/access_token?client_id=12345678910&client_secret=abcdefghijklmnopqrstuvwxyz&grant_type=fb_exchange_token&fb_exchange_token="+currentAccessToken;
extendingAsyncRunner.request(refreshUrl, parameters, new RefreshListener(), null);
}
は、ここでそれが呼ばれlisternerにonCompleteのある、
//REFRESH LISTENER
public class RefreshListener extends BaseRequestListener {
public void onComplete(final String response, Object state) {
try {
final JSONObject json = Util.parseJson(response);
runOnUiThread(new Runnable() {
@Override
public void run() {
tvRefreshResponse.setText("IN REFRESH LISTENER ONCOMPLETE\nResponse is " + response);
tvRefreshToken.setText("IN REFRESH LISTENER ONCOMPLETE\nToken is " + facebook.getAccessToken());
tvRefreshExpiry.setText("IN REFRESH LISTENER ONCOMPLETE\nFacebook expiry is " + millisecToDate(facebook.getAccessExpires()));
}
}); //end runOnUiThread
} catch (JSONException e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
tvRefreshResponse.setText("IN REFRESH LISTENER ONCOMPLETE CAUGHT JSON EXCEPTION \nResponse is " + response);
}
}); //end runOnUiThread
} catch (FacebookError fe) {
runOnUiThread(new Runnable() {
@Override
public void run() {
tvRefreshResponse.setText("IN REFRESH LISTENER ONCOMPLETE CAUGHT FACEBOOK ERROR \nResponse is " + response);
}
}); //end runOnUiThread
} //end catch Facebook error
} //end onComplete
@Override
public void onIOException(IOException e, Object state) {
tvRefreshResponse.setText("IN REFRESH LISTENER IOEXCEPTION \nException is "+ e.getLocalizedMessage());
}
@Override
public void onFileNotFoundException(FileNotFoundException e, Object state) {
tvRefreshResponse.setText("IN REFRESH LISTENER FILE NOT FOUND EXCEPTION \nException is "+ e.getLocalizedMessage());
}
@Override
public void onMalformedURLException(MalformedURLException e, Object state) {
tvRefreshResponse.setText("IN REFRESH MALFORMED URL \nException is "+ e.getLocalizedMessage());
}
@Override
public void onFacebookError(FacebookError e, Object state) {
tvRefreshResponse.setText("IN REFRESH ONFACEBOOK ERROR \nException is "+ e.getLocalizedMessage());
}
} //end RefreshListener
コードが完了... RefreshListenerの私のバージョンですが、応答は新しいアクセストークンまたは有効期限値が含まれていません。私は応答がアクセストークンが含まれないWebブラウザに(英数字の現在のトークン値と)同じURLを入れたときの応答は...
{"id":"https:\/\/graph.facebook.com\/oauth\/access_token","shares":78,"comments":1}
です。 Facebookのoffline_access許可月1日に廃止される予定
関連情報
、2012
代わりに)(onResumeでextendAccessTokenIfNeeded機能を使用することをお勧めしないでください。その、それはなぜ私は、グラフAPIトークンさわやか:-)に探しています
関連スタックオーバーフローに関する質問
Is it possible to extend Facebook tokens with extendAccessTokenIfNeeded in an Android app?理由(私の質問)
How would offline_access work after deprecation after May 1st?
あると I am also having troubleFacebook access token can not be extended
Protecting app secret for extendAccessToken usage (Java/Android)
Facebookは正直に言うと
Facebook offline_access permission deprecation
上記のすべてのリンクで、なぜ詳細情報が必要ですか?あなたはこれを実装するための十分な文書を持っているように見えます。 – Shreeni
あなたは私がそれをうまくいくと思うでしょうが、それはありません。 :-(スタックオーバーフローに関する簡単な質問はすべて、非常に迅速に答えられるので、これは最初のように簡単ではないと思います... – Mel