AndroidApp实现微信登录

近期项目需要用到微信登录,在此记录一下吧

首先需要在微信开放平台上申请appid和appSecret,然后打开我们的安卓项目

第一步:在Android App Gradle中添加依赖

 

implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

第二步:创建WXEntryActivity 类

WXEntryActivity extends Activity implements IWXAPIEventHandler

AndroidApp实现微信登录_第1张图片

重写继承的接口的方法

  1. @Override
  2. public void onReq(BaseReq baseReq) {
  3. }
  4.  
  5. //请求回调结果处理
  6. @Override
  7. public void onResp(BaseResp baseResp) {
  8. }

 第三步:注册到微信

要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的 id。

我这边放在微信登录按钮所在页面的onCreate()页面中,代码:

api = WXAPIFactory.createWXAPI(this, AppConstants.WX_APPID, true);
api.registerApp(AppConstants.WX_APPID);

第四步:然后添加微信登录按钮的响应事件:

if (!api.isWXAppInstalled()) {
    ToastUtils.showShort("您的设备未安装微信客户端");
} else {
    final SendAuth.Req req = new SendAuth.Req();
    req.scope = "snsapi_userinfo";
    req.state = "wechat_sdk_demo_test";
    api.sendReq(req);
}

第五步:接下来app会向微信请求,然后微信会返回信息到我们之前创建的WXEntryActivity类中,这边我们重写下WXEntryActivity的回调方法

在onCreate()中重新获取下wxapi

iwxapi = WXAPIFactory.createWXAPI(this, AppConstants.WX_APPID, false);
iwxapi.handleIntent(getIntent(), this);

重写onResp代码如下:

//请求回调的处理
@Override
public void onResp(BaseResp baseResp) {
    Log.e(TAG, "onResp: " + baseResp.errCode);
    //登录回调
    switch (baseResp.errCode) {
        case BaseResp.ErrCode.ERR_OK:
            String code = ((SendAuth.Resp) baseResp).code;
            Log.e(TAG, "onResp: "+code);
            //使用code请求服务器,获取accesstoken
          
            break;
        case BaseResp.ErrCode.ERR_AUTH_DENIED://用户拒绝授权
            ToastUtils.showShort("用户拒绝了此次授权");
            break;
        case BaseResp.ErrCode.ERR_USER_CANCEL://用户取消
            ToastUtils.showShort("用户取消了登录");
            break;
        default:
            finish();
            break;
    }
}

好了,用回调拿到的code去请求app后台接口,post到微信服务器拉取用户信息吧,然后返回给app用户数据即可

 

 

你可能感兴趣的:(Android)