admin管理员组

文章数量:1531793

2023年12月23日发(作者:)

微信公众平台开发

实例教程

$OAuthurl="/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'];

将接口地址中的appid、secret和code参数替换,并通过getdata()函数(该函数在wei_文件中,包含后可直接被使用)请求该接口地址,并将返回的JSON数据通过json_decode()函数处理为数组,之后单独输出access_token和openid。

访问该程序的网址为:

/connect/oauth2/authorize?appid=wx78478e595939c538&redirect_uri=

/&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

appid为公众号的appid,且需与上面$appid的值相同,否则会提示{"errcode":40029,"errmsg":

"invalid code, hints: [ req_id: z3H9UA0717ns83 ]"}这样的错误信息,其代表的意思是不合法的oauth_code。

为该程序文件。

运行效果如图7-4所示。

图7-4 以scope为snsapi_base发起的网页授权获取access_token及openid

7.1.3 scope为snsapi_userinfo时调用实例

(1)获取code。

在确保微信公众账号拥有授权作用域scope参数为snsapi_userinfo的前提下,引导微信用户打开如下格式页面。

/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

若提示“该链接无法访问”,请检查参数是否填写错误,以及是否拥有scope参数对应的授权作用域权限。

114

第7章

微信公众平台高级接口实例讲解

该链接格式与以snsapi_userinfo为scope发起的网页授权仅仅是scope不同,其余相同。

调用参数说明,如表7-4所示。

表7-4 scope为snsapi_userinfo时接口调用参数说明

参数 是否必需 说明

appid 是 公众号的唯一标识

redirect_uri 是 授权后重定向的回调链接地址,请使用urlencode对链接进行处理

response_type 是 返回类型,请填写code

应用授权作用域,snsapi_userinfo(弹出授权页面,可通过openidscope 是

拿到昵称、性别、所在地。并且即使在未关注的情况下,只要用户授权,也能获取其信息)

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'];。

接口调用地址:/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,

115

本文标签: 授权参数公众接口微信