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
Благодаря ви за отговора. Токенът определено не е нула. Както казах в актуализацията, вече мога да създам потребител по следния начин: регистрирам се с помощта на обекта за профил във 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. createSession
  2. signInUsingSocialProvider

не е необходимо да се обаждате за регистрация

person Rubycon    schedule 14.10.2015
comment
вече го направих, но не работи, създадох сесия със социален доставчик в метода за успех, подписвам го чрез доставчик на facebook, винаги ми дава E/error﹕ [изисква се основно влизане или имейл] - person Mostafa Addam; 21.10.2015