欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android微信登录

程序员文章站 2022-03-11 21:57:24
微信登录当我们做第三方微信登录时可供参考1.首先我们做微信登录时下载 SDK 及 API 文档 Android Studio 环境下:在 build.gradle 文件中,添加如下依赖即可://导入依赖api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'1、2在我们的清单文件中添加微信登录所需的全限

微信登录

当我们做第三方微信登录时可供参考

1.首先我们做微信登录时
下载 SDK 及 API 文档 Android Studio 环境下:
在 build.gradle 文件中,添加如下依赖即可:

//导入依赖
api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

1、2在我们的清单文件中添加微信登录所需的全限

<uses-permission android:name="android.permission.INTERNET" /> 
<!-- for mta statistics, not necessary-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

2.APP_ID最好是存放在我们的变量类是方便我们调用,做微信其他功能时也方便使用

public class Constants {
    //app_id
    public static final String APP_ID = "我们的APP_ID";
    public static IWXAPI wx_api;
}

3.初始化当然是已经拿到APP_ID的时候,初始化操作也可以放在Application里

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // 通过WXAPIFactory工厂,获取IWXAPI的实例
    Constants.wx_api = WXAPIFactory.createWXAPI(getApplicationContext(), Constants.APP_ID, true);
    // 将应用的appId注册到微信
    Constants.wx_api.registerApp(Constants.APP_ID);
}

4.接下来到我们点击登录了,当我们登录时我们的我们的第三方app端会带着我们的APP_ID、包名、签名信息去到微信客户端,微信客户端会带着这些信息去到微信服务器校验注册时的信息,校验成功通知微信客户端唤起微信授权页。

//发送请求唤起收起授权页
public void wake() {
    // send oauth request
    final SendAuth.Req req = new SendAuth.Req();
    req.scope = "snsapi_userinfo";
    req.state = "wechat_sdk_demo_test";
    Constants.wx_api.sendReq(req);
}

5,我们要创建微信回调类接收登录授权页登陆状态,在你的包下创建包名为:wxapi、类名为:WXEntryActivity,!包名类名必须相同,实现IWXAPIEventHandle从写onReq、onResp方法,在onResp方法中处理回调信息

Android微信登录
Android微信登录
5、2.创建完后在我们的清单文件application中注册我们的WXEntryActivity类,exported必须为true

<activity
    android:name=".wxapi.WXPayEntryActivity"
    android:exported="true"
    android:launchMode="singleTop"
    android:taskAffinity="!放app包名"
    android:theme="@android:style/Theme.NoDisplay" />

5、3.接下来在我们的WXEntryActivity类中接收,在onResp方法中处理用户是否授权

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //对象传递给 IWXAPI 接口的 handleIntent 方法
    Constants.wx_api.handleIntent(getIntent(), this);
}
@Override
public void onResp(BaseResp resp) {
    switch (resp.errCode) {
        case BaseResp.ErrCode.ERR_OK:
            Log.i("WXTest", "onResp OK");
            if (resp instanceof SendAuth.Resp) {
                SendAuth.Resp newResp = (SendAuth.Resp) resp;
                //获取微信传回的code
                String code = newResp.code;
      !!!到这我们就获得code值了,可以进行下面自己服务器的操作了
                }
            break;
        case BaseResp.ErrCode.ERR_USER_CANCEL:
            Log.i("WXTest", "onResp ERR_USER_CANCEL ");
            //发送取消
            break;
        case BaseResp.ErrCode.ERR_AUTH_DENIED:
            Log.i("WXTest", "onResp ERR_AUTH_DENIED");
            //发送被拒绝
            break;
        default:
            Log.i("WXTest", "onResp default errCode " + resp.errCode);
            //发送返回
            break;
    }
    finish();
}

到这里就结束了。。。
如有需要请联系qq2621224845

本文地址:https://blog.csdn.net/weixin_50020232/article/details/108125458