Home  >  Article  >  WeChat Applet  >  How to obtain user information through web page authorization

How to obtain user information through web page authorization

Y2J
Y2JOriginal
2017-05-11 13:02:322247browse

The steps to obtain user information are as follows:

1 Step 1: The user agrees to authorize and obtain code
2 Step 2: Exchange the code for web page authorization access_token
3 Step 3 : Refresh access_token (if necessary)
4 Step 4: Pull user information (scope is required to be snsapi_userinfo)

1 Obtain code

Make sure that the WeChat public account has an authorization scope ( scope parameter) (after the service account obtains the advanced interface , it will have snsapi_base and snsapi_userinfo in the scope parameter by default), guide followers to open the following page:

open .weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

If it prompts "The link cannot be accessed", please check whether the parameters are filled in incorrectly , whether it has the authorization scope permission corresponding to the scope parameter.

Special note: Since the authorization operation has a high security level, when initiating an authorization request, WeChat will perform a regular strong matching check on the authorization link. If the order of the parameters of the link is No, the authorization page will not be accessible normally

Among them:

AppID - the unique identifier of the official account
REDIRECT_URI - jump url
SCOPE - the value is snsapi_base (not The authorization page pops up and jumps directly. You can only obtain the user's openid) or snsapi_userinfo (the authorization page pops up. You can get the nickname, gender, and location through openid. Moreover, even if you are not following the user, you can also obtain it as long as the user authorizes it. Information)
STATE - Developers can customize the parameter value of a-zA-Z0-9

2 Exchange the code for web page authorization access_token

If the user agrees to the authorization, the page will jump Go to redirect_uri/?code=CODE&state=STATE.
state is the STATE parameter above passed as it is

Implementation code:

 <code class="hljs php">$code = I(&#39;get.code&#39;);if (empty($code)) {   //todo 非微信访问   exit(&#39;</code>&#39;); }
else
{ //授权后操作 }

Here we can get the code for subsequent acquisition of access_token.

After obtaining the code, request the following link to obtain access_token:

api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

appid - the unique identification of the public account
secret - key
code - the code returned above
grant_type - the value is authorization_code

Implementation code:

 <code class="hljs bash">$url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);$str = 
file_get_contents
($url);$str = 
json
_decode($str, true);$access_token = $str[&#39;access_token&#39;];</code>

here access_token can be cache processed to avoid frequent acquisition of
implementation code. Take TPframework as an example:

 <code class="hljs php">$access_token = S(&#39;access_token&#39;);if (empty($access_token)) {  $url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);  $str = file_get_contents($url);  $str = json_decode($str, true);  $access_token = $str[&#39;access_token&#39;];  S(&#39;access_token&#39;, $access_token, 3600);}</code>

After obtaining access_token, it will also be Returns openid (user's unique identifier). The explanation of WeChat official documentation is: user's unique identifier. Please note that when the user does not follow the official account, when the user visits the official account's webpage, an OpenID
unique to the user and official account will also be generated.

openid uniquely identifies a WeChat user. If the user is not logging in for the first time, he can querythe database to see if there is a user bound to this openid after getting the openid. There is no need to re-obtain the user afterwards. Data, directly obtain the database user_id settingsession, directly log in to access

3 Ignore the third step, only re-obtain the access_token when needed

4 Pull users Information (scope is required to be snsapi_userinfo)

If the database is not bound to this WeChat ID user, it is equivalent to the user's first visit and login, and the user information is obtained through the fourth step (with user authorization, the web page The authorization scope is snsapi_userinfo, then the developer can now pull user information through access_token and openid), then create a user in the background and bind this WeChat user (through openid)


Request method


http: GET (please use https protocol) api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&

lang

=zh_CNaccess_token - the access_token obtained above

openid - the unique identifier of the public account



Implementation code:

 <code class="hljs php">$access_token = S(&#39;access_token&#39;);if (empty($access_token)) {  $url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);  $str = file_get_contents($url);  $str = json_decode($str, true);  $access_token = $str[&#39;access_token&#39;];  S(&#39;access_token&#39;, $access_token, 3600);}</code>

The above is the WeChat public Specific steps to obtain user information.

【Related Recommendations】

1.

WeChat public account platform source code download

2.

Weizhichuang T+ WeChat robot source code

The above is the detailed content of How to obtain user information through web page authorization. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn