第三方微信登陆

    xiaoxiao2022-07-07  280

    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了

    最新回复(0)