如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
在微信开发过程中,最常用的操作就是用户授权登录获取用户基本信息,新手开发可能会遇到很多错误而且不知所措,别问我怎么知道的,我也是从小白过来的。今天讲一下最常见的错误之一: Scope 参数错误或没有 Scope 权限
网上很多种说法,很多都说是因为订阅号没有权限,或者是因为服务号没有认证,或者是没设置网页授权域名,其实是不对的,如果是没有权限或者没有认证或者是微信后台没有设置网页授权域名通常会报redirect_uri参数错误,当然订阅号和未认证服务号确实也没有权限。
至于公众号获取用户信息,参看文章: 微信网页授权获取用户基本信息
这里说说微 信开放平台申请的网站应用在用户授权登录获取用户信息的时候遇到 Scope参数错误或没有Scope权限怎么解决:
在微信开发过程中,最常用的操作就是用户授权登录获取用户基本信息,新手开发可能会遇到很多错误而且不知所措,别问我怎么知道的,我也是从小白过来的。今天讲一下最常见的错误之一: Scope 参数错误或没有 Scope 权限
网上很多种说法,很多都说是因为订阅号没有权限,或者是因为服务号没有认证,或者是没设置网页授权域名,其实是不对的,如果是没有权限或者没有认证或者是微信后台没有设置网页授权域名通常会报redirect_uri参数错误,当然订阅号和未认证服务号确实也没有权限。
至于公众号获取用户信息,参看文章: 微信网页授权获取用户基本信息
这里说说微 信开放平台申请的网站应用在用户授权登录获取用户信息的时候遇到 Scope参数错误或没有Scope权限怎么解决:
1.登录微信开放平台(https://open.weixin.qq.com),管理中心->网站应用->查看应用详情:
(1)查看微信登录接口权限是否已获得;
(2)查看授权回调域名是否是你当前使用的域名。
注意,在开放平台的应用,构建微信OAuth2.0授权登录的时候,scope为snsapi_login,其他地方跟公众号授权登录一模一样。详见官方文档。代码如下:
//微信开放平台获取用户信息
public function _userInfoAuth($redirect_url){
//1.准备scope为snsapi_login网页授权页面
$redirecturl = urlencode($redirect_url);
$snsapi_userInfo_url = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$this->_appid.'&redirect_uri='.$redirecturl.'&response_type=code&scope=snsapi_login&state=YQJ#wechat_redirect';
//2.用户手动同意授权,同意之后,获取code
//页面跳转至redirect_uri/?code=CODE&state=STATE
$code = $_GET['code'];
if( !isset($code) ){
header('Location:'.$snsapi_userInfo_url);
}
//3.通过code换取网页授权access_token
$curl = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$this->_appid.'&secret='.$this->_appsecret.'&code='.$code.'&grant_type=authorization_code';
$content = $this->_request($curl);
$result = json_decode($content);
//4.通过access_token和openid拉取用户信息
$webAccess_token = $result->access_token;
$openid = $result->openid;
$userInfourl = 'https://api.weixin.qq.com/sns/userinfo?access_token='.$webAccess_token.'&openid='.$openid.'&lang=zh_CN ';
$recontent = $this->_request($userInfourl);
$userInfo = json_decode($recontent,true);
return $userInfo;
}
谢谢观看!