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

时间:2015-09-23 13:02:28

标签: android facebook quickblox

我在我的应用程序中使用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会话在另一台设备上登录。

1 个答案:

答案 0 :(得分:0)

如果您想使用社交登录

,则无需创建用户

只需做以下事情:

  1. 了createSession
  2. signInUsingSocialProvider
  3. 不需要调用signUp