公众平台开发 实例教程
114
$OAuthurl="api.weixin.qq/sns/oauth2/access_token?appid=".$appid."&secret=". $secret."&code=".$code."&grant_type=authorization_code";
$OAuthinfo=json_decode(getdata($OAuthurl),true);
$access_token=$OAuthinfo['access_token'];
$openid=$OAuthinfo['openid'];
php实例代码教程
将接口地址中的appid、secret和code参数替换,并通过getdata()函数(该函数在wei_function.php文件中,包含后可直接被使用)请求该接口地址,并将返回的JSON数据通过json_decode()函数处理为数组,之后单独输出access_token和openid。
访问该程序的网址为:
open.weixin.qq/connect/oauth2/authorize?appid=wx78478e595939c538&redirect_uri=
appid为的appid,且需与上面$appid的值相同,否则会提示{"errcode":40029,"errmsg": "invalid code, hints: [ req_id: z3H9UA0717ns83 ]"}这样的错误信息,其代表的意思是不合法的oauth_code。
OAuth2.0.php为该程序文件。
运行效果如图7-4
所示。
图7-4 以scope为snsapi_base发起的网页授权获取access_token及openid
7.1.3 scope为snsapi_userinfo时调用实例
(1)获取code。
在确保公众账号拥有授权作用域scope参数为snsapi_userinfo的前提下,引导用户打开如下格式页面。
open.weixin.qq/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRE CT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,以及是否拥有scope参数对应的授权作用域权限。
第7章 公众平台高级接口实例讲解
115 该链接格式与以snsapi_userinfo 为scope 发起的网页授权仅仅是scope 不同,其余相同。 调用参数说明,如表7-4所示。
表7-4  scope 为snsapi_userinfo 时接口调用参数说明 参数 是否必需 说明
appid 是 的唯一标识
redirect_uri 是 授权后重定向的回调链接地址,请使用urlencode 对链接进行处理 response_type 是 返回类型,请填写code
scope 是 应用授权作用域,snsapi_userinfo (弹出授权页面,可通过openid
拿到昵称、性别、所在地。并且即使在未关注的情况下,只要用户
授权,也能获取其信息)
state 否 重定向后会带上state 参数,开发者可以填写a-zA-Z0-9的参数
值,最多128字节
#wechat_redirect 是 无论是直接打开还是做页面302重定向时,都必须带此参数
(2)通过code 换取access_token 以及OpenID。
该步骤与scope 为snsapi_base 发起的网页授权流程一致,参考其调用方法即可。
(3)刷新access_token(如果需要)。
由于access_token 拥有较短的有效期,当access_token 超时后,可以使用refresh_token 进行刷新。refresh_token 有效期为30天,失效之后需要用户重新授权。
refresh_token 参数在(2)中与access_token 和OpenID 一同获取,获取代码为$refresh_token= $OAuthinfo['refresh_token'];。
接口调用地址:api.weixin.qq/sns/oauth2/refresh_token?appid=APPID&grant_ type=refresh_token&refresh_token=REFRESH_TOKEN
调用参数说明,如表7-5所示。
表7-5  刷新access_token 接口调用参数说明
参数 是否必需 说明
appid 是 的唯一标识
grant_type 是 填写为refresh_token
refresh_token 是 填写通过access_token 获取到的refresh_token 参数
返回说明:
正常情况下,会返回JSON 数据包给:
{ "access_token":"ACCESS_TOKEN",
"expires_in":7200,

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。