企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## **接口内容列表** [TOC] ## **关于网页授权的两种`scope`说明** * 1、以`snsapi_base`为`scope`发起的网页授权,仅可以获取到粉丝的`openid`。(静默授权用户不需要操作、无感知) * 2、以`snsapi_userinfo`为`scope`发起的网页授权,是用来获取用户的基本信息的。(需要授权用户手动确认,是可以拒绝哦) * \*\*注意:\*\*未关注公众号的粉丝是无法通过`WechatUser::getUserInfo`接口获取详细信息的,这里可以用到`snsapi_userinfo`来发起网页授权,再通过`WechatOauth::getOauthUserinfo`来获取。 * **授权的步骤大概分为几步** > 1. 第一步:用户同意授权,获取code > 2. 第二步:通过code换取网页授权access\_token > 3. 第三步:刷新access\_token(如果需要) > 4. 第四步:拉取用户信息(需scope为 snsapi\_userinfo) ## **创建微信网页授权URL** * 参数`$callback`为微信回跳地址(接口已经默认`url_encode`处理,授权成功会有`$_GET['code']`值,可用于下个步骤) * 参数`$state`为重定向后会带上state参数(开发者可以填写`a-zA-Z0-9`的参数值,最多`128`字节) * 参数`$scope`为应用授权作用域(snsapi\_base | snsapi\_userinfo) * 注意:`scope`为`snsapi_userinfo`时,若用户取消授权,那么`$callback`将不会有`$_GET['code']`值。`callback`必需为完全`URL`地址,如`http://basic.demo.cuci.cc/api.html` ~~~ // SDK实例对象 $oauth = & load_wechat('Oauth'); // 执行接口操作 $result = $oauth->getOauthRedirect($callback, $state, $scope); // 处理返回结果 if($result===FALSE){ // 接口失败的处理 return false; }else{ // 接口成功的处理 } ~~~ ## **通过`code`换取网页授权`access_token`** * 这里不需要传入`code`,SDK会自动从URL中取`$_GET['code']`值 * 返回值里,包含用户的`openid`及`access_token`,可用于下个操作 ~~~ // SDK实例对象 $oauth = & load_wechat('Oauth'); // 执行接口操作 $result = $oauth->getOauthAccessToken(); // 处理返回结果 if($result===FALSE){ // 接口失败的处理 return false; }else{ // 接口成功的处理 } ~~~ ## **获取授权后的用户资料** * 参数`$access_token`为通过`WechatOauth::getOauthAccessToken`换取来的`access_token` * 参数`$openid`为通过`WechatOauth::getOauthAccessToken`获取来的`openid` ~~~ // SDK实例对象 $oauth = & load_wechat('Oauth'); // 执行接口操作 $result = $oauth->getOauthUserinfo($access_token, $openid); // 处理返回结果 if($result===FALSE){ // 接口失败的处理 return false; }else{ // 接口成功的处理 } ~~~ **一般项目的检测情况** * 首先对进入微信网页的用户进入简单的网页授权,获取到用户的`openid` * 通过简单接口获取到的openid,可以查询数据库或者调接口`WechatUser::getUserInfo`获取用户信息 * 如果用户参数没有或没有关注,可以再次生成微信Oauth授权链接跳转过去,当然这次需要使用高级模式 * 当用户确认授权之后,我们就可以使用`WechatOauth::getOauthUserInfo`接口来拉取用户信息。 * **注意**:在上面环境要记录`openid`到`SESSION`,如果有`openid`就不需要进行第一次授权了