Bmob第三方QQ登录

官方文档

第三方账号登陆目前适应以下两种应用场景:
一、没有Bmob账号,希望使用第三方账号一键注册或登陆Bmob账号
如果开发者希望用户使用第三方平台的账号注册或登录Bmob的用户体系,则推荐的步骤如下:
1、第三方平台授权,开发者需自行根据第三方平台文档提出的授权方法完成账号授权并得到授权信息
2、调用Bmob提供的loginWithAuthData(BmobV3.3.9版本提供)方法,并自行构造BmobThirdUserAuth(第三方授权信息)对象,调用成功后,在Bmob的User表中会产生一条记录。
二、已有Bmob账号,希望与第三方账号进行关联
如果已使用Bmob的用户体系(假设用户A已登录),希望和第三方平台进行关联,则推荐的步骤如下:
1、第三方平台授权,开发者需自行根据第三方平台文档提出的授权方法完成账号授权并得到授权信息
2、调用associateWithAuthData方法,并自行构造BmobThirdUserAuth(第三方授权信息)对象,调用成功后,你就会在后台的用户A的authData这个字段下面看到提交的授权信息。

具体步骤

  1. 配置AndroidManifest.xml文件
 <!--qq 第三方登录-->
<activity
    android:name="com.tencent.tauth.AuthActivity"
    android:noHistory="true"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="tencent1104720566" />
    </intent-filter>
</activity>

<activity android:name="com.tencent.connect.common.AssistActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:configChanges="orientation|keyboardHidden|screenSize" />
<!--qq 第三方登录-->

2.在LoginActivity.java中加入

public void loginWithAuth(final BmobUser.BmobThirdUserAuth auth) {
    BmobUser.loginWithAuthData(LoginActivity.this, auth, new OtherLoginListener() {
        @Override
        public void onSuccess(JSONObject jsonObject) {
            Log.i("test", "loginwithauth");
            Intent intent = new Intent(LoginActivity.this, MainActivity.class);
            intent.putExtra("json", jsonObject.toString());
            intent.putExtra("from", auth.getSnsType());
            startActivity(intent);
        }

        @Override
        public void onFailure(int i, String s) {
            Toast.makeText(LoginActivity.this, "第三方登录失败:" + s, Toast.LENGTH_LONG).show();
        }
    });
}

private void qqAuthorize() {
    if (mTencent == null) {
        mTencent = Tencent.createInstance(Config.qqAuthorzieId, getApplicationContext());
    }
    mTencent.logout(this);
    mTencent.login(this, "all", new IUiListener() {
        @Override
        public void onComplete(Object o) {
            if (o != null) {
                JSONObject jsonObject = (JSONObject) o;
                try {
                    String token = jsonObject.getString(com.tencent.connect.common.Constants.PARAM_ACCESS_TOKEN);
                    String expires = jsonObject.getString(com.tencent.connect.common.Constants.PARAM_EXPIRES_IN);
                    String openId = jsonObject.getString(com.tencent.connect.common.Constants.PARAM_OPEN_ID);
                    BmobUser.BmobThirdUserAuth authInfo = new BmobUser.BmobThirdUserAuth(
                            BmobUser.BmobThirdUserAuth.SNS_TYPE_QQ, token, expires, openId);
                    loginWithAuth(authInfo);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }

        @Override
        public void onError(UiError uiError) {
            Toast.makeText(LoginActivity.this, "QQ授权出错:", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onCancel() {
            Toast.makeText(LoginActivity.this, "取消qq授权:", Toast.LENGTH_LONG).show();
        }
    });
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值