官方文档:微信开放文档
前提:
- Oauth2.0是一种服务提供商为软件开发商提供安全授权的标准。
- 软件开发商在使用微信登录前需要到微信开发平台进行注册与审核,审核通过获取AppId、AppSecret。
- 开发通过向相关微信url发送请求获取到相应的数据响应。
使用微信扫码登录的步骤:(注意:每个操作都是发送一个url请求并获取响应,有些参数是特定值)
- 根据appid、redirect_uri、response_type、scope、state获取请求code
- 根据appid、secret、code、grant_type获取access_token、有效时间、refresh_token(刷新token时长时使用);若access_token快过期,根据appid、refresh_token、grant_type进行刷新并获取刷新后的access_token等数据
- 根据access_token获取扫码登录签名算法所需sdk_ticket;使用appid、noncestr(随机字符串)、有效的sdk_ticket以及当前时间戳timestamp按照ASCII码根据字段从小到大完成组成“key1=value1&key2=value2”形式的拼接字符串string1,在使用sha1算法完成加密:signature=sha1(string1);参与签名的字段包括第三方 appid,noncestr(随机字符串), 有效的 sdk_ticket, timestamp(时间戳) 。
- 根据appId应用唯一标识、scope应用授权作用域、noncestr随机的尽量不重复的字符串、timestamp时间戳、signature签名、listener授权流程回调接口(OAuthListener类型)作为传入参数完成IDiffDevOAuth.auth()接口发起授权,然后在 OAuthListener.onAuthGotQrcode()回调接口中获取二维码,在 APP 中展示二维码,最后用户通过微信扫码,授权
- 在回调接口中完成用户数据获取与跳转。
授权流程回调接口实现类: