Quickblox Android SDK:使用facebook令牌登录问题
我在我的应用程序中使用Quickblox,无法使用Facebook令牌登录用户,以下是我创建QB会话的方法,效果良好:Quickblox Android SDK:使用facebook令牌登录问题,android,facebook,quickblox,Android,Facebook,Quickblox,我在我的应用程序中使用Quickblox,无法使用Facebook令牌登录用户,以下是我创建QB会话的方法,效果良好: public static void createSession(final QBEntityCallback callback){ QBAuth.createSession(new QBEntityCallbackImpl<QBSession>() { @Override public void onSuccess(QBSe
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());
}
});
}
这是文件
有什么建议吗
更新
如果它能帮助一些人,我现在就这样做:
- 首先,我以这种方式注册,其中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); } });
}publicstaticvoidsignupuser(Profile newProfile,最终qbentycallbackimpl回调){ QBUser QBUser=新的QBUser(); setFullName(newProfile.getName()); setLogin(newProfile.getId()); setPassword(newProfile.getId()); setFacebookId(newProfile.getId()); 注册(qbUser,新的qbentycallbackimpl(){ @凌驾 成功时公共无效(QBUser结果、捆绑参数){ callback.onSuccess(结果,参数); } @凌驾 公共无效onError(列表错误){ callback.onError(错误); } });
- 创建用户后,他现在可以使用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); } });
}public static void signUser(AccessToken currentAccessToken,最终QBEntityCallbackImpl回调){ if(currentAccessToken==null)返回; 字符串facebookAccessToken=currentAccessToken.getToken(); signInUsingSocialProvider(QBProvider.FACEBOOK,facebookAccessToken,null,新的QBEntityCallbackImpl(){ @凌驾 成功时公共无效(QBUser用户、捆绑参数){ onSuccess(用户,参数); } @凌驾 公共无效onError(列表错误){ callback.onError(错误); } });
因此,诀窍是在登录Facebook之前以正常方式创建用户。然后,该用户可以仅使用其Facebook会话登录到另一台设备上。当您想使用社交登录时,无需创建用户 只需做以下几件事:
不需要呼叫注册请确保您的令牌不为“null”,并提供完整的控制台日志谢谢您的回复。令牌绝对不是空的。正如我在更新中所说,我现在可以这样创建一个用户:我使用facebook Profile对象注册,然后使用AccessToken登录SocialProvider,效果很好。您是否确认可以只使用signInUsingSocialProvider创建一个用户,而之前不需要注册?您最终解决了吗?我也有同样的问题currently@LiranRevivo检查我的更新,我添加了一些代码,希望对你有所帮助!谢谢,这对我很有帮助。我已经这么做了,但它不起作用。我用成功的方法创建了一个与社交提供商的会话。我通过facebook提供商签名,它总是给我E/错误﹕ 是否[需要基本登录或电子邮件]
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);
}
});
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);
}
});