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); }参考网址:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317851&token=&lang=zh_CN
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了
