简体   繁体   English

Android Facebook登录中不会调用回调函数

[英]Callback functions are not called in Android Facebook Login

I am developing an Android app. 我正在开发一款Android应用。 In my app, I am integrating Facebook Login. 在我的应用程序中,我正在整合Facebook登录。 I have done developing Facebook Login once before. 我之前曾经开发过一次Facebook登录。 When I develop this time, Facebook callback functions are not called. 当我开发这个时候,不会调用Facebook回调函数。 I cannot check the error as well. 我也无法检查错误。 I have no idea with what is wrong. 我不知道出了什么问题。

I installed Facebook SDK using Gradle 我使用Gradle安装了Facebook SDK

compile 'com.facebook.android:facebook-android-sdk:4.1.0'

Then I generated key hash and set in the Facebook developer settings as follows: 然后我生成了密钥哈希并在Facebook开发人员设置中设置如下:

在此输入图像描述

This is my manifest 这是我的表现

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="tonightfootballreport.com.tfr" >
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
        android:name="tonightfootballreport.model.TfrApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" >
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
        <activity
            android:configChanges="orientation|screenSize"
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:configChanges="orientation|screenSize"
            android:name=".FacebookConfigActivity"
            android:label="Facebook"
            android:theme="@style/AppTheme.NoActionBar" >
            <intent-filter>
                <action android:name="tonightfootballreport.com.tfr.FacebookConfigActivity"/>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:name="com.facebook.FacebookActivity"
            android:configChanges=
                "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:label="@string/app_name" />

        <provider android:authorities="com.facebook.app.FacebookContentProvider1817380365215100"
            android:name="com.facebook.FacebookContentProvider"
            android:exported="true" />
    </application>

</manifest>

As you can see Facebook Login is not in main activity and so I set FacebookConfigActivity in Developer Settings. 正如您所看到的,Facebook登录不在主要活动中,所以我在开发者设置中设置了FacebookConfigActivity。

Then when I click a button in MainActivity, FacebookConfigActivity will be opened and perform Facebook Login. 然后,当我单击MainActivity中的按钮时,将打开FacebookConfigActivity并执行Facebook登录。 Below is the code. 下面是代码。

public class FacebookConfigActivity extends AppCompatActivity {
    private CallbackManager callbackManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext(), AppConfig.FACEBOOK_REQUEST_CODE);
        AppEventsLogger.activateApp(this);
        setContentView(R.layout.activity_facebook);
        setUpCallBack();
        loginInToFacebook();
    }


    private void loginInToFacebook()
    {
        LoginManager.getInstance().logInWithReadPermissions(FacebookConfigActivity.this,Arrays.asList("public_profile"));
    }

    private void setUpCallBack()
    {
        callbackManager = CallbackManager.Factory.create();

        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                //show share alert
                //then share
                Log.i("LOGIN_SUCCESS","LOGIN_SUCCESS");
            }


            @Override
            public void onCancel() {
                Toast.makeText(getBaseContext(), "Operation canceled", Toast.LENGTH_SHORT).show();
                finish();
            }

            @Override
            public void onError(FacebookException error) {
                Toast.makeText(getBaseContext(), "Error in connecting to Facebook", Toast.LENGTH_SHORT).show();
                finish();
            }
        });
    }
}

As you can see, it is just simple Facebook Login. 如您所见,这只是简单的Facebook登录。 So when I click login button, I enter credentials to the Facebook Login form you can see below. 因此,当我单击登录按钮时,我会在Facebook登录表单中输入凭据,您可以在下面看到。

在此输入图像描述

Then after I click OK in the next step, FacebookConfigActivity is displayed and no callback function is called. 然后在下一步中单击“确定”后,将显示FacebookConfigActivity,并且不会调用任何回调函数。 If I click cancel, Facebook Cancel callback is not called as well. 如果我单击取消,则不会调用Facebook取消回调。 What is the possible error? 什么是可能的错误?

You forgot to put listener in onActivityResult() 你忘了把监听器放在onActivityResult()中

put below code in onActivityResult method of activity: 将以下代码放在onActivityResult活动方法中:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM