先到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,再去请求服务器指定的接口,间接的获取到微信用户的个人信息