问题(以微信授权登录为例)
1.为什么先获取code,再获取token,而不是直接获取token?
2.初次绑定的授权页是必要的吗?为什么不默认用户同意授权?
3.微信是根据什么生成open_id的?
oauth2之微信授权登录
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 彭率 2019-08-07 15:04关注
//open_id与code关联
1.H5向App发起获取Code的JS请求
$(function(){
$('body').on('click','.onClick_btn',function(){
//获取操作系统信息
var u = navigator.userAgent, app = navigator.appVersion;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;//Android端
var isIOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/);//iOS端if (isAndroid) { //判断是否为Android操作系统 //请求获取code,参数 用户注册应用得到的client_id 用户自定义的跳转地址 test.getCode('client_id','redirect_uri');//getCode为js与app约定的交互方法 } else if (isIOS) {//判断是否为iOS操作系统 //请求获取code window.webkit.messageHandlers.getCode.postMessage({client_id:'client_id',redirect_uri:'redirect_uri'});//getCode为js与app约定的交互方法 }else{ //其它操作系统,无需任何处理 } }) });
2.App端得到JS参数,携带JS参数、app端保存的用户信息(app端请求不会暴露信息给第三方)请求服务器端获取code;
3.App将请求得到的code和redirect_uri返回给H5
4.H5根据得到的App提供的值做处理
function redirect(redirect_uri,code){//redirect方法为app与h5约定
//处理移动端返回redirect_uri、code
//自定义操作(当前为重定向,第三方也可进行其他操作)
window.location.href = redirect_uri
}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
- ¥15 C# datagridview 单元格显示进度及值
- ¥15 thinkphp6配合social login单点登录问题
- ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配