如果用戶在微信客戶端中訪問第三方網頁,公眾號可以通過微信網頁授權機制,來獲取用戶基本信息,但這種授權需要用戶手動同意,并且由于用戶同意過微信scope參數(shù)錯誤或沒有scope權限,所以無須關注,就可在授權后獲取該用戶的基本信息。
在微信開發(fā)過程中,最常用的操作就是用戶授權登錄獲取用戶基本信息,新手開發(fā)可能會遇到很多錯誤而且不知所措,別問我怎么知道的,我也是從小白過來的。今天講一下最常見的錯誤之一:Scope 參數(shù)錯誤或沒有 Scope 權限
網上很多種說法,很多都說是因為訂閱號沒有權限,或者是因為服務號沒有認證,或者是沒設置網頁授權域名微信scope參數(shù)錯誤或沒有scope權限,其實是不對的,如果是沒有權限或者沒有認證或者是微信后臺沒有設置網頁授權域名通常會報參數(shù)錯誤,當然訂閱號和未認證服務號確實也沒有權限。
至于公眾號獲取用戶信息,參看文章:微信網頁授權獲取用戶基本信息
這里說說微信開放平臺申請的網站應用在用戶授權登錄獲取用戶信息的時候遇到Scope參數(shù)錯誤或沒有Scope權限怎么解決:
1.登錄微信開放平臺(),管理中心->網站應用->查看應用詳情:
(1)查看微信登錄接口權限是否已獲得;
(2)查看授權回調域名是否是你當前使用的域名。
2.查看代碼第一步請求code的時候,使用的scope是不是調用了公眾號的接口scope,公眾號在進行網頁授權的時候scope有兩種,即和
注意,在開放平臺的應用,構建微信.0授權登錄的時候,scope為,其他地方跟公眾號授權登錄一模一樣。詳見官方文檔。代碼如下:
//微信開放平臺獲取用戶信息
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;
}
謝謝觀看!