云南农信手机银行客户端客户端信息提示:检查机构交易开通权限及取机构对应行号信息错,这个问题怎么解决?

95156人阅读
一、什么是OAuth2.0
官方网站:http://oauth.net/ &&http://oauth.net/2/
权威定义:OAuth is An open protocol to allow secure authorization in a simple and standard method from web, mobile and desktop applications.&
OAuth是一个开放协议,允许用户让第三方应用以安全且标准的方式获取该用户在某一网站、移动或桌面应用上存储的私密的资源(如用户个人信息、照片、视频、联系人列表),而无需将用户名和密码提供给第三方应用。
OAuth 2.0是OAuth协议的下一版本,但不向后兼容OAuth 1.0。 OAuth 2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程。
OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。
新浪微博API目前也使用OAuth 2.0。
二、微信公众平台OAuth2.0授权
微信公众平台OAuth2.0授权详细步骤如下:
1. 用户关注微信公众账号。
2. 微信公众账号提供用户请求授权页面URL。
3. 用户点击授权页面URL,将向服务器发起请求
4. 服务器询问用户是否同意授权给微信公众账号(scope为snsapi_base时无此步骤)
5. 用户同意(scope为snsapi_base时无此步骤)
6. 服务器将CODE通过回调传给微信公众账号
7. 微信公众账号获得CODE
8. 微信公众账号通过CODE向服务器请求Access Token
9. 服务器返回Access Token和OpenID给微信公众账号
10. 微信公众账号通过Access Token向服务器请求用户信息(scope为snsapi_base时无此步骤)
11. 服务器将用户信息回送给微信公众账号(scope为snsapi_base时无此步骤)
如果用户在微信中(Web微信除外)访问公众号的第三方网页,公众号开发者可以通过此接口获取当前用户基本信息(包括昵称、性别、城市、国家)。利用用户信息,可以实现体验优化、用户来源统计、帐号绑定、用户身份鉴权等功能。请注意,“获取用户基本信息接口是在用户和公众号产生消息交互时,才能根据用户OpenID获取用户基本信息,而网页授权的方式获取用户基本信息,则无需消息交互,只是用户进入到公众号的网页,就可弹出请求用户授权的界面,用户授权后,就可获得其基本信息(此过程甚至不需要用户已经关注公众号。)”
微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。
在微信公众号请求用户网页授权之前,开发者需要先到公众平台网站的我的服务页中配置授权回调域名。请注意,这里填写的域名不要加http://
关于配置授权回调域名的说明:
授权回调域名配置规范为全域名,比如需要网页授权的域名为:,配置以后此域名下面的页面/music.html&、&/login.html&都可以进行OAuth2.0鉴权。但&、&&、&http://qq.com&&无法进行OAuth2.0鉴权。
具体而言,网页授权流程分为四步:
引导用户进入授权页面同意授权,获取code
通过code换取网页授权access_token(与基础支持中的access_token不同)
如果需要,开发者可以刷新网页授权access_token,避免过期
通过网页授权access_token和openid获取用户基本信息
第一步:用户同意授权,获取code
在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认带有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:
https://open./connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect&若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。
参考链接(请在微信客户端中打开此链接体验)&Scope为snsapi_base&https://open./connect/oauth2/authorize?appid=wx520c15f&redirect_uri=http%3A%2F%%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdapter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_4_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect&Scope为snsapi_userinfo&https://open./connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
公众号的唯一标识
redirect_uri
授权后重定向的回调链接地址,请使用urlencode对链接进行处理
response_type
返回类型,请填写code
应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值
#wechat_redirect
无论直接打开还是做页面302重定向时候,必须带此参数
下图为scope等于snsapi_userinfo时的授权页面:
用户同意授权后
如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数redirect_uri?state=STATE
code说明&:&code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
第二步:通过code换取网页授权access_token
首先请注意,这里通过code换取的网页授权access_token,与基础支持中的access_token不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
获取code后,请求以下链接获取access_token:&&https://api./sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
公众号的唯一标识
公众号的appsecret
填写第一步获取的code参数
grant_type
填写为authorization_code
正确时返回的JSON数据包如下:
{&&&&&access_token&:&ACCESS_TOKEN&,&&&&&expires_in&:7200,&&&&&refresh_token&:&REFRESH_TOKEN&,&&&&&openid&:&OPENID&,&&&&&scope&:&SCOPE&&}
access_token
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_in
access_token接口调用凭证超时时间,单位(秒)
refresh_token
用户刷新access_token
用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
用户授权的作用域,使用逗号(,)分隔
错误时微信会返回JSON数据包如下(示例为Code无效错误):
{&errcode&:40029,&errmsg&:&invalid&code&}
第三步:刷新access_token(如果需要)
由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token拥有较长的有效期(7天、30天、60天、90天),当refresh_token失效的后,需要用户重新授权。
获取第二步的refresh_token后,请求以下链接获取access_token:&&https://api./sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
公众号的唯一标识
grant_type
填写为refresh_token
refresh_token
填写通过access_token获取到的refresh_token参数
正确时返回的JSON数据包如下:
{&&&&&access_token&:&ACCESS_TOKEN&,&&&&&expires_in&:7200,&&&&&refresh_token&:&REFRESH_TOKEN&,&&&&&openid&:&OPENID&,&&&&&scope&:&SCOPE&&}
access_token
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_in
access_token接口调用凭证超时时间,单位(秒)
refresh_token
用户刷新access_token
用户唯一标识
用户授权的作用域,使用逗号(,)分隔
错误时微信会返回JSON数据包如下(示例为Code无效错误):
{&errcode&:40029,&errmsg&:&invalid&code&}
第四步:拉取用户信息(需scope为 snsapi_userinfo)
如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。
http:GET(请使用https协议)&https://api./sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
access_token
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
用户的唯一标识
返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
正确时返回的JSON数据包如下:
{&&&&&openid&:&&OPENID&,&&&&&&nickname&:&NICKNAME,&&&&&sex&:&1&,&&&&&province&:&PROVINCE&&&&&&city&:&CITY&,&&&&&country&:&COUNTRY&,&&&&&&headimgurl&:&&&&&/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46&,&&&privilege&:[&&PRIVILEGE1&&&PRIVILEGE2&&&&&&]&}
用户的唯一标识
用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
用户个人资料填写的省份
普通用户个人资料填写的城市
国家,如中国为CN
headimgurl
用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
错误时微信会返回JSON数据包如下(示例为openid无效):
{&errcode&:40003,&errmsg&:&&invalid&openid&&}
附:检验授权凭证(access_token)是否有效
http:GET(请使用https协议)&https://api./sns/auth?access_token=ACCESS_TOKEN&openid=OPENID
access_token
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
用户的唯一标识
正确的Json返回结果:
{&&errcode&:0,&errmsg&:&ok&}
错误时的Json返回示例:
{&&errcode&:40003,&errmsg&:&invalid&openid&}
&案例代码:
请求授权页面的构造方式
url在线编码工具:
https://open./connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01//EN& &&http-equiv=&Content-Type&
content=&text/ charset=UTF-8& /&&meta name=&viewport& content=&width=device-width,height=device-height,inital-scale=1.0,maximum-scale=1.0,user-scalable=&&&meta name=&apple-mobile-web-app-capable& content=&yes&&&meta name=&apple-mobile-web-app-status-bar-style&
content=&black&&&meta name=&format-detection& content=&telephone=no&&&title&会员注册&/title&&script type=&text/javascript& src=&jquery.js&&&/script&
&&script type=&text/javascript&&&
&&function callback(result) {&&
&&&&&&& alert('cucess');&&&&&&&&&
&&alert(result);& //输出openid&&&&
&&function getQueryString(name) {&&
&&&var reg = new RegExp(&(^|&)& + name + &=([^&]*)(&|$)&, &i&);&&&
&&&var r = window.location.search.substr(1).match(reg);&&&&
&&&if (r != null) return unescape(r[2]);&&&
&&var code = getQueryString(&code&);
&&$.ajax({&
&&async: false,&&&&&& url: &&, //这是我的服务端处理文件php的&&&&&
&&type: &GET&,&&&&&& //下面几行是jsoup,如果去掉下面几行的注释,后端对应的返回结果也要去掉注释&&&&&&
&&// dataType: 'jsonp',&&&&&&
&&// jsonp: 'callback', //jsonp的值自定义,如果使用jsoncallback,那么服务器端,要返回一个jsoncallback的值对应的对象.&&&&&&&
&&// jsonpCallback:'callback',&&&&&&
&&data: {code:code}, //传递本页面获取的code到后台,以便后台获取openid&&&&&&
&&timeout: 5000,&&&&&&&
&&success: function (result) {&
&&&&&&& callback(result);&&&&&
&&},&&&&&&&
&&error: function (jqXHR, textStatus, errorThrown) {
&&alert(textStatus);&&&&&& }&&&
&&&/script&
&&&/head&&body&&/body&&
$code = $_GET['code'];//前端传来的code值
$appid = &wxe99d6&;
$appsecret = &9aa4395fabebb0de6ecc1&;//获取openid
$url = &&;
$result = https_request($url);
$jsoninfo = json_decode($result, true);
$openid = $jsoninfo[&openid&];//从返回json结果中读出openid
$access_token = $jsoninfo[&access_token&];//从返回json结果中读出openid
$callback=$_GET['callback'];& // echo $callback.&({result:'&.$openid.&'})&;
$url1 = &&;
$result1 = https_request($url1);
$jsoninfo1 = json_decode($result1, true);
$nickname=$jsoninfo1[&nickname&];
echo $openid.&:&.$access_token.&:&.$ //把openid 送回前端
&function https_request($url,$data = null){
&&$curl = curl_init();&&&
&&curl_setopt($curl, CURLOPT_URL, $url);&&&
&&curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);&&&
&&curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);&&&&
&&if (!empty($data)){&&&&
&&curl_setopt($curl, CURLOPT_POST, 1);&&
&&curl_setopt($curl, CURLOPT_POSTFIELDS, $data);&&&
&&curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);&
&&$output = curl_exec($curl);&&&&
&&curl_close($curl);&&&&
&&return $
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1532311次
积分:16643
积分:16643
排名:第417名
原创:336篇
转载:239篇
评论:185条
阅读:14228
阅读:7029
(2)(3)(1)(1)(3)(4)(1)(2)(2)(3)(2)(2)(3)(6)(2)(7)(4)(6)(2)(1)(4)(3)(1)(13)(8)(2)(6)(5)(20)(9)(3)(2)(16)(27)(6)(22)(11)(12)(16)(14)(45)(39)(42)(16)(24)(1)(2)(3)(2)(9)(21)(10)(24)(69)(11)广东农信网络学院模拟试题2_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
广东农信网络学院模拟试题2
上传于||暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩13页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢广东农信网络学院模拟试题5_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
广东农信网络学院模拟试题5
上传于||暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩13页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢非本行错误----检查行号及交易权限失败什么意识? - 爱问知识人
(window.slotbydup=window.slotbydup || []).push({
id: '2491531',
container: s,
size: '150,90',
display: 'inlay-fix'
权限失败 什么意识?
您的举报已经提交成功,我们将尽快处理,谢谢!
呼吸的问题,归结起来还是神经的问题,失眠,应该对应的是失眠,如果失眠解决了,就不会有呼吸的问题了。
针对失眠,可在睡前半小时喝点牛奶,或喝点酸枣泡的水(或...
"专属于债务人自己行使的专属权"意识是只能债务人自己行使的权利,主要有债务人对第三人享有的具有人身性质的金钱债权。人身性质是指基于抚养关系、扶养关系、赡养关系、...
打开IE选工具/Internet选项/高级/在设置的下拉列表勾选“禁用脚本调试(Internet Explorer)”和“禁用脚本调试(其它)”,然后按应用确定...
何必去想那么多,只要自己开心就好!估计你遇到的大部份是没有素质的人吧.
你不要以为每个上海人都有较高的文化修养哟,我就常看到坐车时,下车的人还没...
大家还关注

我要回帖

更多关于 云南农信客户端 的文章

 

随机推荐