2

私は Android にアプリケーションを持っており、AccountManager を使用して AuthToken を取得し、Facebook や Twitter で何かをしようとしています。だから私はこれを持っています:

AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccountsByType("com.facebook.auth.login");
Bundle options = new Bundle();
Account myAccount=null;

    for (int i=0;i<accounts.length;i++) {
        if (accounts[i].type.equals("com.facebook.auth.login")) myAccount=accounts[i];
        //options.putString("facebookUser", accounts[i].name);
    }

    am.getAuthToken(
            myAccount,                     // Account retrieved using getAccountsByType()
            "Manage your tasks",            // Auth scope
            options,                        // Authenticator-specific options
            this,                           // Your activity
            new OnTokenAcquired(),          // Callback called when a token is successfully acquired
            new Handler(new OnError()));

私の 2 つのコールバックは onTokenAcquired です。

public class OnTokenAcquired implements AccountManagerCallback<Bundle> {

@Override
public void run(AccountManagerFuture<Bundle> result) {
    try {
        Bundle bundle = result.getResult();
        Log.e("onTokenAcquired",bundle.getString(AccountManager.KEY_AUTHTOKEN));
    } catch (OperationCanceledException e) {
        Log.e("onTokenAcquired","operationcanceled");
    } catch (AuthenticatorException e) {
        Log.e("onTokenAcquired","authenticatorexception");
    } catch (IOException e) {
        Log.e("onTokenAcquired","IOException");
    }
}
}

および OnError:

public class OnError implements Callback {

@Override
public boolean handleMessage(Message msg) {
    Log.e("onError","ERROR");
    return false;
}

}

Android 開発者ガイド (http://developer.android.com/intl/es/training/id-auth/authenticate.html) に従っています。したがって、エラー時またはトークンの取得時の2つのオプションがあり、それぞれに Log.e() を使用して何かを読み取ることができますが、何も書き込まれていません。

誰でも私を助けることができますか?エラーが発生した場合、またはトークンが取得されなかった場合、少なくとも何か作業を行う必要がありますが、何が起こっているのかわかりません。

4

2 に答える 2

3

ドキュメントから完全に明らかではありませんが、ユーザーの介入が必要な場合、呼び出している getAuthToken のバリアントはコールバックを呼び出しません。ここにいくつかの回避策があります:

https://code.google.com/p/android/issues/detail?id=25473

それが具体的にあなたが抱えている問題かどうかはわかりませんが、おそらく役に立たないでしょう.

于 2014-10-09T00:10:05.680 に答える