我在我的应用程序中使用 Quickblox,但我无法使用 Facebook token 登录用户,以下是我创建 QB session 的方法,效果很好:
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 登录时,结果 token 不为空,但是当我这样做时:
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是文档。
有什么建议吗?
更新
如果它可以帮助某些人,下面是我现在的做法:
首先,我以这种方式注册,其中 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 session 在另一台设备上登录。
最佳答案
当您想使用社交登录时,您不需要创建用户
只需执行以下操作:
- 创建 session
- signInUsingSocialProvider
不需要调用注册
关于android - Quickblox Android SDK : Login with facebook token issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32740365/