如何从Android上保存的帐户中检索Facebook-AuthToken

Den*_*ter 7 android facebook auth-token accountmanager

我正在尝试使用以下代码检索Facebook的AuthToken(由Facebook for Android保存).

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);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

找到登录凭据并将FACEBOOK-TYPE FOUND写入LogCat,但不会记录THIS AUTHTOKEN:[...]EXCEPTION @ AUTHTOKEN.所以我想am.getAuthToken从未被召唤过.

我错过了什么?

一般来说,如果有一个更好(并且至少工作)的方法从Android帐户检索Facebook authtoken请告诉我.

非常感谢你的帮助!

最好的问候
S.

Oll*_*lle 6

为什么不使用Facebook SDK?

Facebook它的类有一个成员获得的OAuth 2.0访问令牌(如果那是你所需要的), getAccessToken().

  • @Olle offline_access权限现已弃用https://developers.facebook.com/roadmap/offline-access-removal/ (2认同)