質問

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が起こっている理由と場所が得られます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top