Quickblox Android SDK:使用facebook令牌登录问题

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

我在我的应用程序中使用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());
        }
    });
}
这是文件

有什么建议吗

更新

如果它能帮助一些人,我现在就这样做:

  • 首先,我以这种方式注册,其中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);
        }
    });