【android】第三方集成之——微信登录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/da_caoyuan/article/details/79202335

【android】第三方集成之——微信登录

关于微信登录的相关博客,还是很多的。在此着重总结,步骤和思路哈以及注意事项。

1:集成步骤

  1. 在开放平台注册创建应用,申请登录权限
  2. 下载sdk,gradle 一行依赖即可,拷贝相关文件到项目工程目录
  3. 全局初始化微信组件
  4. 请求授权登录,获取code
  5. 通过code获取授权口令access_token
  6. 在第5步判断access_token是否存在和过期
  7. 如果access_token过期无效,就用refresh_token来刷新
  8. 使用access_token获取用户信息

2:思路

其实官方文档中说的还是比较清楚的,在此还是画一下图,希望能表达更清楚一些。

微信官方文档:
移动应用微信登录开发指南
授权后接口调用

结合自己理解,如图所示,希望能看的更明白些:(图中,提到的 微信提供的接口,在 授权后接口调用 中,都有的)
这里写图片描述

3:注意事项

1:在调起微信授权界面后,用户点击授权后,会回调到此方法,那怎样获取code?
如下:

   // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
    @Override
    public void onResp(BaseResp baseResp) {
       // 通过此方法 获取code
       String code = ((SendAuth.Resp) baseResp).code;
    }

2:授权成功后,获取到用户头像的url后,要将头像资源保存到本地,不是保存url链接哦。
原因:在用户修改微信头像后,旧的微信头像URL将会失效,因此开发者应该自己在获取用户信息后,将头像图片保存下来,避免微信头像URL失效后的异常情况。

3:调起微信授权界面,req.state的值,要做处理:

 /**
     * 登录微信
     *
     * @param api 微信服务api
     */
    public static void loginWeixin(IWXAPI api) {

        // 判断是否安装了微信客户端
        if (!api.isWXAppInstalled()) {
            ToastUtil.showToast("您还未安装微信客户端!");
            return;
        }
        // 发送授权登录信息,来获取code
        SendAuth.Req req = new SendAuth.Req();
        // 应用的作用域,获取个人信息
        req.scope = "snsapi_userinfo";
        /**
         * 用于保持请求和回调的状态,授权请求后原样带回给第三方
         * 为了防止csrf攻击(跨站请求伪造攻击),后期改为随机数加session来校验
         */
        req.state = "app_wechat";
        api.sendReq(req);

    }

4:获取授权口令,传的appsecret(app的秘钥),不要放大app中,要从后台获取,并且获取的是经过加密处理的数据,app端获取后,再做解密处理。

5:在access_token过期后,我们用refresh_token来刷新时,如果你的返回错误码是:42007,说明你的微信密码更换过,accesstoken 和 refreshtoken 失效,需要重新授权哦!


相关博客:

微信官方全局返回码说明

什么,集成微信登录只要三行代码
和上面是同一个:
https://www.jianshu.com/u/8b661f60979b

猜你喜欢

转载自blog.csdn.net/da_caoyuan/article/details/79202335
今日推荐