我在我的应用程序中使用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登录时,结果标记不为null,但是当我这样做时:
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会话在另一台设备上登录。
答案 0 :(得分:0)
如果您想使用社交登录
,则无需创建用户只需做以下事情:
不需要调用signUp