1、为什么要实现第三方登录
方便,快捷,减少流程,可以留住用户
2、常见的 微信,QQ,微博,支付宝,Github
3、实现第三方登录,需要什么
a、需要去第三方平台提交应用,(开发者资料完善)[提交应用注意,需要提交包名] b、审核就可以拿到平台(微信,qq,微博),给咱们提供的appid
特别注意
项目包名一致,如果给了微信的appid一定要使用
微信登陆分享的具体步骤:
1.拿到微信的appid
2.添加依赖
dependencies {
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.github.bumptech.glide:glide:4.9.0'
}
3.权限
<uses-permission android:name="android.permission.INTERNET" />
<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"/>
4.签名文件
…….keystore
添加签名————>app———>build.gradle下:
buildTypes {
release {
// 是否进行混淆
minifyEnabled false
// 混淆文件的位置
signingConfig signingConfigs.debug
proguardFiles 'proguard-rules.pro'
}
debug {
minifyEnabled false
signingConfig signingConfigs.debug
proguardFiles 'proguard-rules.pro'
}
}
signingConfigs {
debug {
storeFile file('密钥文件的名称')
storePassword "密码"
keyAlias "密钥别名"
keyPassword "密钥密码"
}
}
5.注册
// APP_ID 替换为你的应用从官方网站申请到的合法appID
private static final String APP_ID = " 替换为你的应用从官方网站申请到的合法appID ";
// IWXAPI 是第三方app和微信通信的openApi接口
private IWXAPI api;
private void regToWx() {
// 通过WXAPIFactory工厂,获取IWXAPI的实例
api = WXAPIFactory.createWXAPI(this, APP_ID, true);
// 将应用的appId注册到微信
api.registerApp(APP_ID);
}
6.移动应用微信授权登录(代码示例)
{
// send oauth request
Final SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "wechat_sdk_demo_test";
api.sendReq(req);
}
7.添加回调方法:
需要再创建一个包名:wxapi,在这包下面创建微信回调页面
例如:
<activity
android:name=".wxapi.WXEntryActivity"
android:label="@string/app_name"
android:exported="true"
android:taskAffinity="net.sourceforge.simcpux"
android:launchMode="singleTask">
</activity>
8.微信回调页面的代码(WXEntryActivity)
public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
// APP_ID 替换为你的应用从官方网站申请到的合法appID
private static final String APP_ID = " 替换为你的应用从官方网站申请到的合法appID";
// IWXAPI 是第三方app和微信通信的openApi接口
private IWXAPI api;
private void regToWx() {
// 通过WXAPIFactory工厂,获取IWXAPI的实例
api = WXAPIFactory.createWXAPI(this, APP_ID, true);
// 将应用的appId注册到微信
api.registerApp(APP_ID);
api.handleIntent(getIntent(), this);
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wx);
regToWx();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
api.handleIntent(getIntent(), this);
}
@Override
public void onReq(BaseReq baseReq) {
}
@Override
public void onResp(BaseResp resp) {
if(resp.getType()== ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX){//分享
Log.i("ansen","微信分享操作.....");
// WeiXin weiXin=new WeiXin(2,resp.errCode,"");
// EventBus.getDefault().post(weiXin);
}else if(resp.getType()==ConstantsAPI.COMMAND_SENDAUTH){//登陆
Log.i("ansen", "微信登录操作.....");
SendAuth.Resp authResp = (SendAuth.Resp) resp;
String code=authResp.code;
Log.i("code", code);
//doToken(code);
// WeiXin weiXin=new WeiXin(1,resp.errCode,authResp.code);
// EventBus.getDefault().post(weiXin);
doLogin(code);
}
}
}
8、请求微信登录接口就ok了