Quickblox Android SDK: вход в систему с проблемой токена facebook

Я использую Quickblox в своем приложении и не могу войти в систему с помощью токена Facebook, вот как я создаю сеанс QB, который отлично работает:

public static void createSession(final QBEntityCallback callback){
    QBAuth.createSession(new QBEntityCallbackImpl<QBSession>() {
        @Override
        public void onSuccess(QBSession result, Bundle params) {
            callback.onSuccess();
        }

        @Override
        public void onError(List<String> errors) {
            Log.e("QBSession", "error " + errors.toString());
        }
    });
}

Когда пользователь входит в систему с помощью facebook, токен результата не равен нулю, но когда я это делаю:

public static void registerUser(AccessToken currentAccessToken, final QBEntityCallbackImpl callback) {

    if (currentAccessToken == null)return;

    QBUsers.signInUsingSocialProvider(QBProvider.FACEBOOK, currentAccessToken.getToken(), null, new QBEntityCallbackImpl<QBUser>() {
        @Override
        public void onSuccess(QBUser user, Bundle args) {
            callback.onSuccess(user, args);
        }

        @Override
        public void onError(List<String> errors) {
            Log.e("error", "is " + errors.toString());
        }
    });
}

Я получаю это в logcat:

E/error﹕ is [base Login or email required]

Здесь находятся документы.

Какие-либо предложения?

ОБНОВЛЕНИЕ

В случае, если это может помочь некоторым людям, вот как я это делаю сейчас:

  • Во-первых, я регистрируюсь таким образом, где Profile — это объект обратного вызова для входа в facebook:

     public static void signUpUser(Profile newProfile, final QBEntityCallbackImpl callback){
    
    QBUser qbUser = new QBUser();
    qbUser.setFullName(newProfile.getName());
    qbUser.setLogin(newProfile.getId());
    qbUser.setPassword(newProfile.getId());
    qbUser.setFacebookId(newProfile.getId());
    
    QBUsers.signUp(qbUser, new QBEntityCallbackImpl<QBUser>() {
        @Override
        public void onSuccess(QBUser result, Bundle params) {
            callback.onSuccess(result, params);
        }
    
        @Override
        public void onError(List<String> errors) {
            callback.onError(errors);
        }
    });
    

    }

  • После того, как пользователь создан, он может войти в систему, используя signUpUsingSocialProvider:

    public static void signInUser(AccessToken currentAccessToken, final QBEntityCallbackImpl callback) {
    
    if (currentAccessToken == null)return;
    
    String facebookAccessToken = currentAccessToken.getToken();
    QBUsers.signInUsingSocialProvider(QBProvider.FACEBOOK, facebookAccessToken, null, new QBEntityCallbackImpl<QBUser>() {
        @Override
        public void onSuccess(QBUser user, Bundle args) {
            callback.onSuccess(user, args);
        }
    
        @Override
        public void onError(List<String> errors) {
            callback.onError(errors);
        }
    });
    

    }

Таким образом, хитрость заключалась в том, чтобы создать пользователя обычным способом перед входом в Facebook. Тогда этот пользователь может войти в систему на другом устройстве, просто используя свой сеанс Facebook.


person Joris Obert    schedule 23.09.2015    source источник
comment
пожалуйста, убедитесь, что ваш токен не нулевой, и предоставьте полный журнал консоли   -  person Sabina Bashuk    schedule 25.09.2015
comment
Спасибо за ответ. Токен определенно не нулевой. Как я уже сказал в обновлении, теперь я могу создать пользователя таким образом: я подписываюсь на UP, используя объект профиля facebook, а затем подписываюсь на SignInUsingSocialProvider, используя AccessToken, и все работает нормально. Вы подтверждаете, что можно создать пользователя, просто используя signInUsingSocialProvider без предварительного вызова signUp?   -  person Joris Obert    schedule 26.09.2015
comment
Вы решили это в конце концов? У меня такая же проблема в настоящее время   -  person Liran Revivo    schedule 04.10.2015
comment
@LiranRevivo Проверьте мое обновление, я добавил немного кода, надеюсь, это поможет!   -  person Joris Obert    schedule 05.10.2015
comment
Спасибо, это было полезно для меня..   -  person Veer3383    schedule 01.01.2016


Ответы (1)


Вам не нужно создавать пользователя, если вы хотите использовать социальный вход

Просто сделайте следующее:

  1. создатьсессию
  2. signInUsingSocialProvider

не нужно звонить signUp

person Rubycon    schedule 14.10.2015
comment
я уже сделал это, но это не работает, я создал сеанс с социальным провайдером в методе успеха, я подписываю его через провайдера facebook, он всегда дает мне E/ошибку: [требуется базовый логин или адрес электронной почты] - person Mostafa Addam; 21.10.2015