2011-12-28 53 views
0

我使用Facebook的登錄有一個非常惱人的問題。 在仿真器上運行時,它工作得很好,但是當試圖在實際設備上使用它時會導致發生以下情況: 我看到Facebook頁面加載幾秒鐘,然後什麼也沒有。單點登錄在模擬器上工作,但不在設備上

_facebook = new Facebook(Common.APP_ID); 
_facebook.authorize(this, new DialogListener() { 
    @Override 
    public void onComplete(Bundle values) { 
     try { 
      JSONObject json = new JSONObject(_facebook.request("me")); 
      String id = json.getString("id"); 
      String token = _facebook.getAccessToken(); 
      Log.w("facebook", id); 
      Log.w("facebook", token); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
    @Override 
    public void onFacebookError(FacebookError error) { 
     Log.w("facebook", "onFacebookError"); 
    } 
    @Override 
    public void onError(DialogError e) { 
     Log.w("facebook", "onError"); 
    } 
    @Override 
    public void onCancel() { 
     Log.w("facebook", "onCancel"); 
    } 
}); 

我沒有得到任何日誌說什麼是錯的,它不會停止在任何onError方法,什麼都沒有。只是照常進行。 我已經關注了在線編寫的所有內容,我已經將使用keytool獲得的原生應用ID添加到應用頁面,並且仍然是 - NADA。

任何幫助(甚至是解決方法)都會大受歡迎! 謝謝

+0

您是否按照Facebook SDK的要求在Activity中實現了onActivityResult()方法? – harism 2011-12-28 22:06:33

+0

你有任何其他Facebook應用程序已經安裝在設備上? – 2011-12-29 04:47:30

+0

@harism解決了它!我不敢相信我錯過了!如果您希望我將其作爲解決方案接受它,請將其作爲答案而不是評論:) – Gal 2011-12-29 14:56:08

回答

1

由於@harism沒有發表自己的評論作爲一個答案, 我想我會至少有一個答案這個問題。

我錯過了有這段代碼

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    _facebook.authorizeCallback(requestCode, resultCode, data); 
} 

爲什麼它會在沒有它,而不是實際的設備上的模擬器是什麼我不能完全肯定,但使用此代碼不會導致SSO在我的設備上工作。

0

作爲一種解決方法,您可以強制facebook使用Facebook.FORCE_DIALOG_AUTH。我現在遇到了這個問題,而且這是我能找到的唯一工作:/

0

您需要使用以下命令獲取Android哈希鍵,並將其放置在開發人員的Facebook應用配置中。 facebook.com/apps

keytool -exportcert -alias androiddebugkey -keystore〜/ .android/debug.keystore | openssl sha1 -binary | OpenSSL的BASE64

欲瞭解更多信息,這裏是一個真正有用的博客文章:http://sean.lyn.ch/2011/07/android-the-facebook-sdk-sso-and-you/

相關問題