第三方微信登陆

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了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值