2012-01-10 29 views
1

我使用面向Android的Facebook SDK發生SSO問題。當安裝原生Facebook應用程序時,僅發生問題。當它沒有安裝,一切正常,具體爲:安裝Facebook本機應用程序時,isSessionValid()返回NO

Facebook facebook = new Facebook(APP_ID); 
facebook.authorize(mActivity, , new DialogListener() { 
    ... 
}); 

facebook.isSessionValid(); // returns true 

但被安裝本地應用程序時,facebook.isSessionValid()仍儘管我叫authorize方法返回false

我應該補充一點,我使用keytool創建了一個基於Android的原生Facebook應用程序,並使用從調試證書生成的hashkey。

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64 

這是怎麼回事?

+0

相同這裏。你碰巧解決了這個問題嗎? – 2012-01-29 15:49:58

+0

@liorry尚未:( – 2012-01-29 19:33:35

+0

測試4.0.3和2.3.4。我在這裏創建了一個錯誤報告http://developers.facebook.com/bugs/166465130126268但顯然他們說它應該工作。再次找到文檔並找到是什麼導致了這個問題。 – 2012-01-31 10:42:43

回答

7

已解決! :)

我當然希望這也適用於你。 問題是Windows生成無效密鑰。

運行此與您的應用程序:

try { 
    PackageInfo info = getPackageManager().getPackageInfo("**YOURPACKAGENAME**", PackageManager.GET_SIGNATURES); 
    for (Signature signature : info.signatures) { 
     MessageDigest md = MessageDigest.getInstance("SHA"); 
     md.update(signature.toByteArray()); 
     Log.i("PXR", Base64.encodeBytes(md.digest())); 
    } 
} 
catch (NameNotFoundException e) {} 
catch (NoSuchAlgorithmException e) {} 

不要忘記讓Base64編碼(http://iharder.sourceforge.net/current/java/base64/)。

生成的密鑰在你的logcat上,用這個替換舊的密鑰。

解決方案感謝: http://p-xr.com/implementing-facebook-into-your-app-invalid-key-with-keytool/

+0

很高興爲你工作:)然而,事實證明我之前甚至使用了正確的簽名。這太痛苦了! – 2012-01-31 15:23:07

+0

@Amokrane Chentir :)怪異的......我不知道這個錯誤可能是什麼。 – 2012-02-01 10:37:38

+0

@Amokrane Chentir工作? :) – 2012-03-08 08:31:01

相關問題