{Состояние сеанса: ОТКРЫТИЕ, токен: {токен AccessToken: ACCESS_TOKEN_REMOVED разрешения: []}, appId: 1xxxxxxxxxxx}

Я хочу реализовать Facebook Login в своем приложении, но здесь я получаю проблемы при попытке входа в систему i.e:

**{Session state:OPENING, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]}, appId:1xxxxxxxxxxxxxxx}**

а иногда и этот:

  **{Session state:CLOSED, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]}, appId:1xxxxxxxxxxxxxxx}**

Примечание. Вышеупомянутая проблема возникает, когда мое устройство уже установило приложение NATIVE FACEBOOK APP, если я удалю приложение Facebook, он работает абсолютно нормально. Может ли кто-нибудь помочь мне в этом вопросе?

Заранее спасибо

Ответ 1

Обязательно переопределите в своей деятельности метод onActivityResult:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);

}

Ответ 2

Попробуйте

AccessToken.getCurrentAccessToken().getToken();

вместо использования функции toString().

Ответ 3

Я знаю, что это старый билет, но никто не дал правильного ответа. Токен удален из toString для предотвращения экспозиции токена.

com.facebook.LoggingBehavior(из строки 29):

/**
 * Indicates that access tokens should be logged as part of the request logging; normally they are not.
 */
INCLUDE_ACCESS_TOKENS,

com.facebook.AccessToken(из строки 322):

private String tokenToString() {
    if (this.token == null) {
        return "null";
    } else if (Settings.isLoggingBehaviorEnabled(LoggingBehavior.INCLUDE_ACCESS_TOKENS)) {
        return this.token;
    } else {
        return "ACCESS_TOKEN_REMOVED";
    }
}

Чтобы показать токен в запросах toString, просто добавьте регистрацию в настройки:

    Settings.addLoggingBehavior( LoggingBehavior.INCLUDE_ACCESS_TOKENS );
    this.mUiLifecycleHelper = new UiLifecycleHelper( this, this.mCallback );
    this.mUiLifecycleHelper.onCreate( savedInstanceState );

Надеемся, что это поможет другим с той же проблемой.

Ответ 4

Просто голова. Этот точный случай происходил со мной. Мой логин перестает работать только потому, что я изменил режим запуска Activity в файле Manifest.xml с помощью

Android: launchMode = "SingleInstance"

к

Android: launchMode = "singleTask"

Итак, я снова изменил его на singleInstance, и теперь он работает нормально.

Ответ 5

Это может произойти, потому что вы не добавили hashkey в свое приложение Facebook. Ознакомьтесь с этой ссылкой Создание Hashkey для Android, чтобы узнать, как сгенерировать hashkey.

Это происходило со мной тоже. Он начал работать после того, как я добавил приложение hashkey в Facebook.

Ответ 6

Это моя рабочая интеграция нового Facebook SDK 4.1.  Сначала вам нужно запустить SDKin 4.1///

/** if face book SDK is not initialized then initialized.*/ 
    if(!FacebookSdk.isInitialized())
           FacebookSdk.sdkInitialize(BaseActivity.this);    

Теперь вам нужен callback manger

/** create face book callback factory.*/ 
    if(null == callbackManager)
    callbackManager = CallbackManager.Factory.create();

Это вызов.

    public final  FacebookCallback<LoginResult> _mcallbackLogin =    new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {

            if(loginResult.getAccessToken() != null){
                Log.i("TAG", "LoginButton FacebookCallback onSuccess token : "+ loginResult.getAccessToken().getToken());
              GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        if(null != object){
                            Log.e("TAG", object.optString("name"),object.optString("first_name"),object.optString("email"),false).execute();
                        }
                    }
                }).executeAsync();
            }
        }

        @Override
        public void onCancel() {
            Log.e("TAG", "LoginButton FacebookCallback onCancel");
        }

        @Override
        public void onError(FacebookException exception) {
            Log.e("TAG","Exception:: "+exception.getStackTrace());
        }
    };

Теперь вам нужно зарегистрироваться, обратившись на кнопку входа в facebook

    loginBtn.registerCallback(BaseActivity.callbackManager,_mcallbackLogin);