2011-06-28 145 views
0

我一直遵循本指南:http://developers.facebook.com/docs/guides/mobile/#androidFacebook SDK for android - 無法登錄!

現在我生成

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

關鍵的指示,我該密鑰加入我的Facebook應用程序,並把它傳遞在我的代碼:

public class FacebookSyncActivity extends Activity{ 
    Facebook facebook = new Facebook("THE KEY"); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.facebook_layout); 

     facebook.authorize(this, new DialogListener() { 
      @Override 
      public void onComplete(Bundle values) {} 

      @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); 
    } 

但每次我嘗試登錄我的設備或模擬器我收到此錯誤信息上:

發生錯誤。請稍後再試

它看起來是許多人的一個問題,因爲他們可以GitHub的網頁上看到 https://github.com/facebook/facebook-android-sdk/issues/74

你覺得呢?

+0

你檢查了logcat嗎?我偶爾會遇到類似的問題,即登錄屏幕保持空白,但會在日誌中引發SSL錯誤。你有沒有安裝FB應用程序也試過這個? (它在SDK文件夾中,使用「adb install Facebook.apk」來安裝它)也許你可以進一步跟蹤問題。如果它與其中一個協同工作,那麼你至少知道key/id沒有問題(可能在複製它們時留下了一個字符?)。 – 2011-06-28 19:55:35

+0

是的,我沒有檢查logcat,但我沒有看到任何錯誤。當我卸載Facebook時,我也會得到一個對話框(一個不同的 - 更小,這可能不是「本地」Facebook對話框,而是Facebook的SDK),同樣的錯誤。然後當我按下「oKay」時,它會啓動帶有Facebook的瀏覽器。我沒有辦法留下一個字符 - 我已經完成了這100次,每次我得到這個愚蠢的錯誤:( – Alex1987

回答

1

好幾個小時後,我的頭靠在牆上我發現問題:)看來,我錯誤地將我生成的密鑰傳遞給Facebook的構造函數 - 當我只是需要從應用程序頁面在臉書上。我認爲這造成了很多人的困惑......

+0

該死的。是的,我也是第一次這樣做。對不起,我不記得那一個。 = /不幸的是,Facebook的文件並不總是很清楚。 – 2011-06-29 14:24:46

1

您是否嘗試過讓哈希鍵這種方式,設置你的項目構建目標2.0(sdk5):

try { 
     info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES); 
     for (Signature signature : info.signatures) { 
      MessageDigest md; 

       md = MessageDigest.getInstance("SHA"); 
       md.update(signature.toByteArray()); 
       String something = new String(Base64.encode(md.digest(), 0)); 
       Log.e("hash key", something); 
     } 
    } catch (NameNotFoundException e1) {    
     Log.e("name not found", e1.toString()); 
    } catch (NoSuchAlgorithmException e) { 
      Log.e("no such an algorithm", e.toString()); 
    }catch (Exception e){ 
      Log.e("exception", e.toString()); 
    } 

得到這個,因爲我剛剛問了similar question

+0

是的,我曾嘗試過(我將目標設置爲2.1,而不是2.0),但它給出了EXACTLY與keygen相同的關鍵!順便說一句,你給的鏈接是在談論一個不同的問題... – Alex1987

+0

是的,我說類似的不一樣的:-)。有趣的是,它給出了完全相同的結果,它不起作用。也許這不是你的鑰匙,然後你提到它, – Blundell