2011-05-09 49 views
4

我遇到的問題正如標題所示。我進行了authorize()調用,但我永遠無法調用authorizeCallback(),因爲onActivityResult()永遠不會被調用。 SSO完成,因爲它顯示權限屏幕(不允許/允許),並且我的Facebook設置頁面上顯示應用程序批准。有任何想法嗎?我認爲這可能與活動的launchMode有關,但刪除了「singleInstance」,但沒有什麼區別。facebook android SSO完成,但活動關閉時未調用onActivityResult()

正如我上面提到的,我可以確認在Facebook.java中啓動的權限活動。

try { 
     Log.e("@@@", "Starting activity"); 
     activity.startActivityForResult(intent, activityCode); 
    } catch (ActivityNotFoundException e) { 
     didSucceed = false; 
    } 

對於它的價值,我可以確認下面使用的代碼。

我已經實現了authorizeCallback()方法在onActivityResult():

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    mStateHolder.getFacebook().authorizeCallback(requestCode, resultCode, data); 
} 

..但它從來沒有被調用。我使用的授權方法如下:

facebook.authorize(this, new String[]{ "user_birthday" }, new DialogListener() { 
     public void onComplete(Bundle values) { 
      Log.e(TAG, "onComplete()"); 
      // I make a request here.. 
     } 
     // ...with the other methods as well 
} 

其它潛在有用的信息:

  • 我運行的Nexus One,2.3.4
  • Facebook應用程序安裝
  • 它工作正常如果我強制使用Dialog方法,但我試圖讓SSO工作。
  • 編輯:哦!經過多次搜索,我發現了這個問題。意圖中存在流氓Intent.FLAG_ACTIVITY_NO_HISTORY標誌(它不會將活動保留在堆棧中)。謝謝大家試圖回答這個問題。

    EDIT2:刪除launchMode = singleInstance確實有所作爲btw ..我開始收到錯誤「無法讀取調用包的簽名」。

    +0

    「activityCode」的值是什麼?有幾次我不小心使用了'0',並且根據不會導致調用'onActivityResult()'的文檔,即使'start'是用'startActivityForResult()'開始的。 – LeffelMania 2011-05-09 02:53:59

    回答

    0

    您如何完成認證活動?你必須設置結果類型,並可能發回一個值。例如:

    Intent data = new Intent(); 
    data.putExtra(ApplicationConstants.EXTRA_IS_DONE, true); 
    setResult(RESULT_OK, data); 
    finish();