Facebook登录sdk – Android

我正在尝试使用facebook登录连接我的应用程序。 我做了所有这些步骤 ,我面临一个奇怪的问题。 所以登录按钮有效,因为facebook登录窗口出现但我没有获得facebook令牌(调用onError)。

我已经尝试过本课题的所有解决方案。

此代码与Facebook教程中的代码相同。

mCallbackManager = CallbackManager.Factory.create(); LoginButton loginButton = findViewById(R.id.login_button); loginButton.setReadPermissions("email"); loginButton.registerCallback(mCallbackManager, new FacebookCallback() { @Override public void onSuccess(LoginResult loginResult) { Log.d(TAG, "facebook:onSuccess:" + loginResult); } @Override public void onCancel() { Log.d(TAG, "facebook:onCancel"); } @Override public void onError(FacebookException error) { Log.d(TAG, "facebook:onError", error); error.printStackTrace(); } }); 

这是我的错误,与问题 (额外:null)有点不同:

 09-12 21:13:40.317 29573-29573/com.xxxx.yyyy D/FACEBOOK: facebook:onError SERVER_ERROR: [code] 1675030 [message]: Error performing query. [extra]: null at com.facebook.login.LoginManager.onActivityResult(LoginManager.java:219) at com.facebook.login.LoginManager$1.onActivityResult(LoginManager.java:174) at com.facebook.internal.CallbackManagerImpl.onActivityResult(CallbackManagerImpl.java:92) 

AndroidManifest.xml中

            

在我的Build.gradle中,我添加了Facebook SDK

  implementation 'com.facebook.android:facebook-login:[4,5)' 

活动:

 public class Home extends AppCompatActivity { private CallbackManager mCallbackManager; private static final String TAG = "FACEBOOK"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); mCallbackManager = CallbackManager.Factory.create(); LoginButton loginButton = findViewById(R.id.login_button); loginButton.setReadPermissions(Arrays.asList("public_profile", "email")); loginButton.registerCallback(mCallbackManager, new FacebookCallback() { @Override public void onSuccess(LoginResult loginResult) { Log.d(TAG, "facebook:onSuccess:" + loginResult); } @Override public void onCancel() { Log.d(TAG, "facebook:onCancel"); } @Override public void onError(FacebookException error) { Log.d(TAG, "facebook:onError", error); error.printStackTrace(); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { mCallbackManager.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data); } 

}

有谁知道如何解决这个问题?

应该做两件事来避免这些问题。

  1. 只有当您正在开发的应用程序时才会出现此错误示例。 点击此链接并选择您的应用程序。 那你可以在这做两件事。 在“角色”选项卡中,您可以仅允许登录您的朋友,或者选择“应用评论”并将您的应用设为公开,然后任何人都可以登录。还可以刷新您的代币。

转到您的面板,然后选择管理员门户。 Step1并将测试器添加到您的项目中。 第2步

并且

不正确

 loginButton.setReadPermissions(Arrays.asList("public_profile", "email")); 

正确的是

loginButton.setReadPermissions("email", "public_profile", "user_friends");

问题可能是由Facebook Developer Dashboard中的应用程序状态正在开发中引起的!

要上线,请在“基本”设置中添加隐私策略URL,然后单击“保存更改”

编辑:将您的依赖项更改为

 implementation 'com.facebook.android:facebook-android-sdk:4.34.0' 

并创建Application类,如下所示

 import android.app.Application; import com.facebook.FacebookSdk; import com.facebook.appevents.AppEventsLogger; public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); FacebookSdk.sdkInitialize(getApplicationContext()); AppEventsLogger.activateApp(this); } } 

不要忘记在清单中声明它的android:name=".MyApplication"