android - Quickblox Android SDK : Login with facebook token issue

标签 android facebook quickblox

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

最佳答案

当您想使用社交登录时,您不需要创建用户

只需执行以下操作:

  1. 创建 session
  2. signInUsingSocialProvider

不需要调用注册

关于android - Quickblox Android SDK : Login with facebook token issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32740365/

相关文章:

android - Android Facebook 单点登录

javascript - fb.ui 在回调中返回 post_id 但实际上并未发布

iphone - 如何在 QuickBlox 中注册时上传带有 blobID 的个人资料图片?

android - 底部导航栏在尝试滚动时隐藏

android - 在 Android 3.0+ 中,如何让具有自定义布局的操作按钮的样式像标准操作按钮一样

Facebook Graph API 发布到 friend 墙

android - Quickblox,如何使用自定义对象从下载的文件中获取用户标识

java - 是否可以将同一个 BitmapDrawable 分配给多个对象?

android - 实现 Android 通知应用程序的最省电方式

ios - QuickBlox:错误!!框架更新后无法在设备中运行应用程序