2015-03-31 371 views
0

我一直試圖在Android應用中實現Facebook登錄,但沒有成功。由於設計原因,我想實現Facebook登錄,而不使用SDK提供的LoginButton。爲此,我使用了LoginManager和CallbackManager類。我的代碼工作正常,當用戶沒有登錄Facebook應用程序,但如果用戶在Facebook應用程序中有一個打開的會話,我得到一個錯誤,說:Android Facebook SDK 4.0登錄:用戶登錄Facebook應用時出錯

錯誤 應用程序未安裝:此應用程序的開發人員還沒有正確設置這個應用程序的Facebook登錄。

我確定在Facebook上正確配置了應用程序,根據Facebook開發者教程,我在我的清單和gradle文件中擁有了所有內容,所以我不知道什麼是錯的。我真的很感謝這個話題的任何幫助,我需要讓這個工作繼續進行App開發。謝謝! 這裏是我的代碼與Facebook登錄:

在的onCreate(...)方法

FacebookSdk.sdkInitialize(getApplicationContext()); 
callbackManager = CallbackManager.Factory.create(); 
btnFacebookLogin.setOnClickListener(new View.OnClickListener() 
{ 
     @Override 
     public void onClick(View v) 
     { 
      facebookLogin(); 
     } 

}); 

LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() 
{ 
     @Override 
     public void onSuccess(LoginResult loginResult) 
     { 
      Log.i("LoginActivity","onSuccess Facebook Login"); 
      Toast.makeText(getApplicationContext(),"Login successful",Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onCancel() 
     { 

     } 

     @Override 
     public void onError(FacebookException e) 
     { 
      Log.e("LoginActivity","ERROR: "+e.getMessage()); 
     } 
}); 

在這裏,我facebookLogin()方法:

public void facebookLogin() 
{ 
    LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile")); 
} 

而且onActivityResult(。 ..)

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

再次感謝您的任何幫助!

+0

你的onError方法被調用了嗎? logcat中還有其他的東西嗎? – 2015-03-31 22:32:57

+0

另外,你可能使用測試應用程序,而不是真正的應用程序ID? – 2015-03-31 22:34:24

回答

3

轉到您的Facebook Apps並選擇您的應用,然後點擊狀態&審覈,然後選擇並將其更改爲YES爲你想使這個應用程序及其所有Live功能提供給公衆?

enter image description here

+0

謝謝。這是我錯過的。 – 2015-04-06 20:05:16

0

你的代碼應該可以正常工作。問題出在Facebook應用程序端設置。
您是否正確配置了您的Facebook應用?首先,你是否從你自己的帳戶登錄?因爲在發展中國家,它只允許你登錄你和測試者帳戶。您可以在您的應用程序preferenceRoles」中設置您的應用程序測試人員。
此外,請檢查,如果在您的應用程序settings→「基本」Single Sign On爲「是」。在「高級」Client OAuth Login中也是「是」。