Androidで保存されたアカウントからFacebook-Authtokenを取得する方法
-
15-10-2019 - |
質問
FacebookのAuthTokenを取得しようとしています(によって保存されています AndroidのFacebook)次のコードを使用します。
AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccountsByType("com.facebook.auth.login");
if (accounts.length > 0) {
for(int j = 0; j < accounts.length; j++) {
Account account = accounts[j];
if(account.type != null && account.type.equals("com.facebook.auth.login")) {
Log.e(RuntimeVars.MY_NAME, "FACEBOOK-TYPE FOUND");
am.getAuthToken(account, "com.facebook.auth.login", null, ConversationList.this,
new AccountManagerCallback<Bundle>() {
public void run(AccountManagerFuture<Bundle> arg0) {
try {
Bundle b = arg0.getResult();
Log.e(RuntimeVars.MY_NAME, "THIS AUTHTOKEN: " + b.getString(AccountManager.KEY_AUTHTOKEN));
}
catch (Exception e) {
Log.e(RuntimeVars.MY_NAME, "EXCEPTION@AUTHTOKEN");
}
}
}, null);
}
}
}
ログイン資格情報が見つかります Facebookタイプが見つかりました このauthtoken:[... または 例外@authtoken 記録されています。だから私は思う am.getAuthToken
呼ばれることはありません。
何が足りないの?
一般に、AndroidアカウントからFacebook Authtokenを取得するためのより良い(そして少なくとも機能している)アプローチがある場合は、私に知らせてください。
どうもありがとうございました!
よろしくお願いします
S.
解決
Facebook SDKを使用してみませんか?
Facebook
クラスには、OAuth 2.0アクセストークンを取得するメンバーがあります(それが必要な場合)、 getAccessToken()
.
他のヒント
ロギングステートメントのどちらも達成されていないという事実を説明するには、次のことを検討してください。
ライン〜8:
am.getAuthToken(account, "com.facebook.auth.login", null, ConversationList.this,
...すぐに利用できる場合は、トークンを返すことができます。多分それはあなたが探している答えですか?アカウントマネージャーのドキュメントの引用:
以前に生成された認証トークンがこのアカウントとタイプのためにキャッシュされている場合、返されます。それ以外の場合、保存されたパスワードが利用可能な場合、新しいAUTHトークンを生成するためにサーバーに送信されます。それ以外の場合、ユーザーはパスワードを入力するように求められます。
電話してみてください AccountManager.blockingGetAuthToken
代わりは。それがうまくいけば、ここにはもっと面白いものがあります...
また、あなたのマニフェストがあることを確認してください USE_CREDENTIALS
許可を正しく設定します。
am.getauthtokenの前にtry {を追加して、このメソッド宣言が終了する場合に例外をキャッチする前に、Excepptionが起こっている理由と場所が得られます。