2012-10-24 48 views
1

我用這簡單的代碼:安卓:Facebook的登錄不從這裏工作

enter image description here

段要求:

https://developers.facebook.com/docs/mobile/android/build/#sig

public class MainActivity extends Activity { 

    Facebook facebook = new Facebook("xxxxxxxxxxxxxx"); 
    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook); 
    private SharedPreferences mPrefs; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mPrefs = getPreferences(MODE_PRIVATE); 
     String access_token = mPrefs.getString("access_token", null); 
     long expires = mPrefs.getLong("access_expires", 0); 
     if (access_token != null) { 
      facebook.setAccessToken(access_token); 
     } 
     if (expires != 0) { 
      facebook.setAccessExpires(expires); 
     } 

     if (!facebook.isSessionValid()) { 
      facebook.authorize(this, new String[] {}, 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); 
     try { 
      JSONObject json = Util.parseJson(facebook.request("me")); 
      String facebookID = json.getString("id"); 
      String firstName = json.getString("first_name"); 
      String lastName = json.getString("last_name"); 
      String email = json.getString("email"); 
      String gender = json.getString("gender"); 

     } catch (Exception e) { 

      //If i click Okay i get Exception saying You need an Active access token to get the current user details 
     } 

    } 
} 

使用這讓哈希鍵一個密碼(「android」)

並給我像這樣的代碼:

xLYMxxxxxx/0enePexxf4DORUfR8 =

,並在Facebook應用我的配置是:

enter image description here

但我得到這個錯誤:

enter image description here

如果我按好吧,我得到th e異常說明您需要一個活動訪問令牌來獲取當前用戶詳細信息。

我嘗試了在SOF上給出的所有可能的解決方案。但沒用。請幫忙

謝謝你

+0

看看com.facebook.android.Utils類的代碼。 set private static boolean ENABLE_LOG = true;當您嘗試登錄時觀察LogCat輸出。 – Agata

+0

Yeah.it總是如此,從未在logcat中向我展示過任何東西。 :( –

+0

我也是「配置錯誤登錄」的錯誤,過了一段時間後,原來Facebook想要不同的keyhash,然後我有,出於某種原因 – Agata

回答

2

看起來好像你沒有從終端正確得到你的哈希鍵。

試試這個

  1. 前往Facebook的SDK源Util.java啓用日誌記錄,並設置ENABLE_LOG爲true。
  2. 嘗試再次登錄到您的應用程序,你仍然應該看到紅色的錯誤信息。按OK。
  3. 轉到您的logcat,發現看起來像這樣的條目:

D/Facebook-authorize(24739): Login failed: invalid_key:Android key mismatch. Your key "uk3udeH7vrOGNFH2FJjdJbdWJWI" does not match the allowed keys specified in your application settings. Check your application settings at http://www.facebook.com/developers

複製和粘貼鍵到您的儀表板,然後再試一次。

看到這個帖子:App is misconfigured for Facebook login : Android Facebook integration issue

+0

問題是:logcat不顯示任何錯誤。但幾次重新啓動後,我終於得到了你粘貼的錯誤。但我有疑問。除了在配置中使用的散列鍵結尾處的** = **以外,給出的錯誤密鑰是相同的。所以我應該刪除** = **?謝謝 –

+0

不,你應該粘貼它所說的。 =符號是密鑰散列 –

+0

eww的一部分。但它只有** = **纔有效。我應該使用1我得到在終端使用keytool或1我得到的logcat錯誤信息? –