微信登录集成

先到https://open.weixin.qq.com注册开发者账号

账号注册好后,新建一个Android应用

Android应用创建好后,就可以得到appId和appSecret

接下来就开始编写具体的代码。

先在AndroidManifest.xml中添加如下权限

<!--微信所需权限-->
<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"/>
<!--微信所需权限-->

然后在app的build.gradle中添加微信登录所需的依赖

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

接下来就将appId注册到微信里

// 将应用的appId注册到微信
        api.registerApp(APP_ID);

        //建议动态监听微信启动广播进行注册到微信
        context.registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {

                // 将该app注册到微信
                api.registerApp(APP_ID);
            }
        }, new IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP));

注册到微信后,通过如下代码就可以拉起微信进行授权

  final SendAuth.Req req = new SendAuth.Req();
        req.scope = "snsapi_userinfo";//申请授权区域,总共有四个
        req.state = "xiaoXinYuanLogin";
        api.sendReq(req);

接着在当前包名下再新建一个wxapi的包,注意wxapi是微信官方指定的名字,不可以乱写,在该包下创建一个WXEntryActivity,这个Activity的名字也是不要乱写,WXEntryActivity的配置如下

 <activity
            android:name=".wxapi.WXEntryActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:exported="true"
            android:taskAffinity="com.xiaoxinyuan"
            android:launchMode="singleTask">
        </activity>

WXEntryActivity需要实现implements IWXAPIEventHandler,我们在该接口的回调方法中接收微信返回给客户端的数据

在WXEntryActivity的onCreate,和onNewIntent中,将IWXAPIEventHandler进行注册

wxUtil.api.handleIntent(intent, this);

接着在WXEntryActivity的onRes中可以得知授权结果,如下

授权成功后,就可以通过resp.code去获取access_token,因为想要获取用户的信息,就需要access_token,以下代码就是获取access_token

当access_token获取到后,就可以通过access_token去获取微信的用户信息了

由于上面有些代码我是经过封装的,因此大家可以去下载完整的项目看看。

https://download.csdn.net/download/u010632547/12229968

另外大家去测试时,需要将appId和appSecrey替换成你自己的,如下

特别注意:access_token和app_secrey微信官方建议不要直接写在应用里,如果access_token和app_secrey泄露会导致程序的数据安全问题,因此建议是配置在服务端。所以在实际的开发中,我们通常会请求自己的服务器,服务器会返回一个包装过后的access_token,然后你根据服务器的这个access_token,再去请求服务器指定的接口,间接的获取到微信用户的个人信息

发布了16 篇原创文章 · 获赞 1 · 访问量 719

猜你喜欢

转载自blog.csdn.net/u010632547/article/details/104676763