2011-10-24 61 views
1

我使用Android和Facebook連接有一個簡單的應用程序發佈到用戶的牆上。如果官方Facebook應用程序未安裝,認證系統似乎可以正常工作 - 它會打開一個webview,用戶登錄並從此開始應用程序工作。但是,如果用戶安裝了官方應用程序,身份驗證代碼會打開一個白色屏幕,頂部帶有藍色的facebook橫幅,並帶有一個加載彈出對話框。這運行了大約一秒鐘,然後直接回到我的應用程序。但是,沒有顯示權限或登錄屏幕,如示例中所示。該應用程序也沒有收到訪問令牌。有誰知道什麼是錯的?我的登錄代碼如下:Android/Facebook - 沒有權限/登錄屏幕與應用程序

public void authFb(){ 
    if(!facebook.isSessionValid()) { 

     facebook.authorize(this, new String[] {"publish_stream", "offline_access"}, new DialogListener() { 
      @Override 
      public void onComplete(Bundle values) { 
       SharedPreferences.Editor editor = mPrefs.edit(); 
       editor.putString("access_token", facebook.getAccessToken()); 
       editor.putLong("access_expires", facebook.getAccessExpires()); 
       editor.commit(); 
      } 

      @Override 
      public void onFacebookError(FacebookError error) {} 

      @Override 
      public void onError(DialogError e) {} 

      @Override 
      public void onCancel() {} 
     }); 
    } 
} 

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

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

「臉譜」變量只是一個Facebook(HASH)對象。

+0

你需要找出什麼是在響應發生。您應該將日誌記錄語句添加到所有這些空方法來轉儲出任何響應。我敢打賭,FacebookError()回來了。不知道究竟是什麼。記錄它。 –

+0

FacebookError輸出「invalid_key」。我不明白 - 這是否意味着我的散列不正確?如果是這樣,爲什麼它沒有應用程序工作? –

回答

1

發生這種情況是因爲您在Facebook開發人員頁面上給出的應用程序的散列鍵不正確。檢查這個question的步驟如何做到這一點。

**,唯一的區別是,在shell執行路線是這樣的:(exportcert不再好)

的keytool -export -alias androiddebugkey -keystore 「C:\ locationOfYourDebugKeystoreFile」 | openssl sha1 -binary | openssl base64

對我來說這是: keytool -export -alias androiddebugkey -keystore「C:\ Users \ Sean.android \ debug.keystore」| openssl sha1 -binary | OpenSSL的BASE64

希望這有助於... 肖恩

相關問題