Facebook登录sdk - Android

car*_*ton 7 java android facebook-android-sdk

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

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

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

mCallbackManager = CallbackManager.Factory.create();
    LoginButton loginButton = findViewById(R.id.login_button);
    loginButton.setReadPermissions("email");
    loginButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
        @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();
        }
    });
Run Code Online (Sandbox Code Playgroud)

这是我的错误,与问题(额外: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)
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml中

        <meta-data android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id"/>

    <activity android:name="com.facebook.FacebookActivity"
        android:configChanges=
            "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
        android:label="@string/app_name" />
    <activity
        android:name="com.facebook.CustomTabActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="@string/fb_login_protocol_scheme" />
        </intent-filter>
    </activity>
Run Code Online (Sandbox Code Playgroud)

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

    implementation 'com.facebook.android:facebook-login:[4,5)'
Run Code Online (Sandbox Code Playgroud)

活动:

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<LoginResult>() {
        @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); 
}
Run Code Online (Sandbox Code Playgroud)

}

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

5ec*_*ab0 0

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

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

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

implementation 'com.facebook.android:facebook-android-sdk:4.34.0'
Run Code Online (Sandbox Code Playgroud)

并创建 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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