Я использую 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.
убедитесь, что ваш токен не является «нулевым» и обеспечивает f ull консольный журнал –
Благодарим вас за ответ. Токен определенно не равен нулю. Как я уже сказал в обновлении, теперь я могу создать пользователя таким образом: я подписываю UP, используя объект профиля facebook, а затем signInUsingSocialProvider с помощью AccessToken, и он отлично работает. Вы подтверждаете, что можно создать пользователя, просто используя signInUsingSocialProvider без вызова signUp раньше? –
вы решили в конце концов? У меня такая же проблема в настоящее время –