2011-08-29 104 views
0

我試圖使用官方的Facebook API的Android和我發現一個奇怪的事情,在身份驗證過程。 該代碼是從官方示例中刪除的。Android的Facebook的API API授權

@Override 
public void onCreate(Bundle savedInstanceState) { 
    mFacebook = new Facebook(APP_ID); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
           Intent data) { 
    mFacebook.authorizeCallback(requestCode, resultCode, data); 
} 

private final class ButtonOnClickListener implements OnClickListener { 

    public void onClick(View arg0) { 
     mFacebook.authorize(mActivity, mPermissions, new LoginDialogListener()); 
    } 
} 


private class SessionListener implements AuthListener, LogoutListener { 
    public void onAuthSucceed() { 
     setImageResource(R.drawable.logout_button); 
     SessionStore.save(mFb, getContext()); 
    } 
} 

所以在onClick中,您提供了對您的活動的參考,因爲您將在onActivityResult中獲得登錄過程的結果。

奇怪的是,如果您的活動在登錄屏幕上被擊斃,您的facebook對象將在onCreate中重新實例化,並且在authorizeCallback調用之後,您的SessionListener方法都不會被調用。

問題是我有一個將在onAuthSucceed()中調用的上傳方法。

有沒有人有解決方案?

回答

0

所以我正在研究的原始Facebook的來源,發現事情:

public void authorizeCallback(int requestCode, int resultCode, Intent data) { 
    if (requestCode == mAuthActivityCode) { 
     // when you have a new object the mAuthActivityCode is 0 

    //... 
    mAuthDialogListener.onFacebookError(
          new FacebookError(error)); 
    // even if you start auth with requestCode 0, your mAuthDialogLister will be null 

} 

我擴展了Facebook類,這樣我可以通過所需的東西。

你可以在這裏找到源碼:https://github.com/facebook/facebook-android-sdk/blob/master/facebook/src/com/facebook/android/Facebook.java