2012-11-21 4 views
1

Android에 애플리케이션이 있고 AccountManager를 사용하여 AuthToken을 가져오고 Facebook이나 Twitter로 작업하려고합니다. 그래서이있어 :getAuthToken y Android가 콜백을 호출하지 않음

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())); 

내 두 콜백 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; 
} 

} 

내가 안드로이드 개발자 가이드에게 (HTTP를 다음 해요 : // developer.android.com/intl/es/training/id-auth/authenticate.html). 따라서 두 가지 옵션이 있습니다. 오류 또는 토큰 획득시 Log.e()에 모두 읽었지만 각별히주의를 기울이지는 않습니다.

아무도 도와 줄 수 있습니까? 오류가 발생했거나 토큰을 얻지 못했다면 최소한 해결해야 할 것이 있습니다.하지만 무슨 일이 일어나고 있는지는 알 수 없습니다.

답변

1

getAuthToken이 Facebook 인증 프로그램에서 지원되지 않는다고 생각합니다. 또한 사용중인 Auth 범위 "Manage your task"는 "Google Tasks"의 범위이며 getAuthToken이 지원되는 경우 사용할 올바른 범위가 아닐 가능성이 큽니다.

대신 Facebook SDK for Android을 사용하는 것이 좋습니다. 이를 통해 인증 토큰을 얻는 것은 매우 쉽습니다. 또한 SDK에는 공식 페이스 북이 설치되지 않은 사용자 또는 폰에 추가 된 페이스 북 계정이 매우 정교합니다. How to retrieve an Facebook-AuthToken from the accounts saved on Android

3

그것은 문서에서 완전히 명확하지 않다, 그러나 사용자 개입이 필요한 경우 호출 getAuthToken의 변형은 콜백을 호출하지 않습니다 :

도 참조하십시오. 몇 가지 해결 방법은 여기에 있습니다 :

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

이 특별히 당신이 발생하는 문제의 경우 잘 모르겠지만, 아마 도움이되지 않습니다.

관련 문제