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方法中处理回调信息
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