2015-09-23 3 views
3

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

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()); 
     } 
    }); 
} 

When журнал пользователя с использованием 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] 

Here - это документы.

Любые предложения?

UPDATE

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

  • Во-первых, я подпишу этот путь, где профиль является объект из 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.

+0

убедитесь, что ваш токен не является «нулевым» и обеспечивает f ull консольный журнал –

+0

Благодарим вас за ответ. Токен определенно не равен нулю. Как я уже сказал в обновлении, теперь я могу создать пользователя таким образом: я подписываю UP, используя объект профиля facebook, а затем signInUsingSocialProvider с помощью AccessToken, и он отлично работает. Вы подтверждаете, что можно создать пользователя, просто используя signInUsingSocialProvider без вызова signUp раньше? –

+0

вы решили в конце концов? У меня такая же проблема в настоящее время –

ответ

0

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

Просто сделать следующие вещи:

  1. CreateSession
  2. signInUsingSocialProvider

Дон» t необходимо вызвать signUp

+0

Я уже сделал это, но не работал. Я создал сеанс с социальным провайдером в методе успеха. Я подписал его через провайдера facebook, предоставляя мне всегда E/error: [base Login или email required ] –

Смежные вопросы