QQ第三方登录

1:下载SDK解压将jar文件夹中的jar包复制到libs中


:2:<!-- QQ登录授权所需权限 -->

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

3:<!-- 注册SDKActivity -->

<activity android:name="com.tencent.tauth.AuthActivity"

android:launchMode="singleTask"

android:noHistory="true" >

<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="tencent1105602574" />

<!-- 开放平台获取的APPID -->

</intent-filter>

</activity>

<activity android:name="com.tencent.connect.common.AssistActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:screenOrientation="portrait"/>


4:布局文件activity_main 就一个Button按钮

<Button

  android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="点击QQ登录"

android:onClick="buttonLogin"

android:layout_centerInParent="true"

android:textSize="16sp"

android:textColor="#f4736e"/>

5:代码

public class ShouYeActivity extends AppCompatActivity{
private static final String TAG = "MainActivity"; 
private static final String APP_ID = "1105602574";//官方获取的APPID    
private Tencent mTencent;    
private BaseUiListener mIUiListener;    
private UserInfo mUserInfo;
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_shou_ye);
//传入参数APPID和全局Context上下文
mTencent = Tencent.createInstance(APP_ID, ShouYeActivity.this.getApplicationContext());

}
public void buttonLogin(View v){
/**通过这句代码,SDK实现了QQ的登录,这个方法有三个参数,
第一个参数是context上下文,第二个参数SCOPO 是一个String类型的字符串,表示一些权限
官方文档中的说明:应用需要获得哪些API的权限,由“,”分隔。例如:SCOPE = “get_user_info,add_t”;
所有权限用“all” 第三个参数,是一个事件监听器,IUiListener接口的实例,这里用的是该接口的实现类 */

mIUiListener = new BaseUiListener();
//all表示获取所有权限
mTencent.login(MainActivity.this,"all", mIUiListener);
}
/**
 * 自定义监听器实现IUiListener接口后,需要实现的3个方法
 * onComplete完成 onError错误 onCancel取消
 */
private class BaseUiListener implements IUiListener {

    @Override
    public void onComplete(Object response) {
        Toast.makeText(ShouYeActivity.this, "授权成功", Toast.LENGTH_SHORT).show();
        Log.e(TAG, "response:" + response);
        JSONObject obj = (JSONObject) response;
        try {
            String openID = obj.getString("openid");
            String accessToken = obj.getString("access_token");
            String expires = obj.getString("expires_in");
            mTencent.setOpenId(openID);
            mTencent.setAccessToken(accessToken, expires);
            QQToken qqToken = mTencent.getQQToken();
            mUserInfo = new UserInfo(getApplicationContext(), qqToken);
            mUserInfo.getUserInfo(new IUiListener() {
                @Override
                public void onComplete(Object response) {
                    //Toast.makeText(getActivity(),"登陆成功",Toast.LENGTH_SHORT).show();
                    Log.i(TAG,""+response.toString());
                    Log.e(TAG,"登录成功"+response.toString());
                }

                @Override
                public void onError(UiError uiError) {
                    Log.e(TAG,"登录失败"+uiError.toString());
                }

                @Override
                public void onCancel() {
                    Log.e(TAG,"登录取消");

                }
            });
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onError(UiError uiError) {
        Toast.makeText(ShouYeActivity.this, "授权失败", Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onCancel() {
        Toast.makeText(ShouYeActivity.this, "授权取消", Toast.LENGTH_SHORT).show();

    }

}

/**
 * 在调用Login的Activity或者Fragment中重写onActivityResult方法
 *
 * @param requestCode
 * @param resultCode
 * @param data
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == Constants.REQUEST_LOGIN) {
        Tencent.onActivityResultData(requestCode, resultCode, data, mIUiListener);
    }
    super.onActivityResult(requestCode, resultCode, data);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值