Facebook Войти SDK - Android - PullRequest
       8

Facebook Войти SDK - Android

0 голосов
/ 12 сентября 2018

Я пытаюсь подключиться к своему приложению с помощью входа в 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();
        }
    });

Это моя ошибка, которая немного отличается от Вопросы (дополнительно: ноль):

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

        <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>

В свой 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<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); 
}

}

Кто-нибудь знает, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Чтобы избежать этих проблем, необходимо сделать две вещи.

  1. Эти примеры ошибок появляются только тогда, когда вы разрабатываете приложение.Перейдите по этой ссылке и выберите свое приложение.Тогда вы можете сделать две вещи здесь.На вкладке Роли вы можете разрешить вход только своим друзьям или выбрать обзор приложения и сделать ваше приложение общедоступным, после чего любой сможет войти в систему. А также обновить свои токены.

Перейти на панельи выберите Портал администратора. Step1 и добавьте тестер в ваш проект. Step2

А также

Неверно

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

Правильный -

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

0 голосов
/ 13 сентября 2018

Проблема может быть вызвана состоянием приложения в Панель разработчика Facebook находится в стадии разработки!

Чтобы начать работу, добавьте URL-адрес политики конфиденциальности в Основные настройки и нажмите «Сохранить».Изменения

РЕДАКТИРОВАТЬ: Измените свою зависимость на

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

И создайте класс приложения, как показано ниже

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"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...