PHP微信公众号网页获取用户信息

前期准备:

(1)公众号需要是服务号。

(2)在公众号获取appid 和secret 并把服务器的ip地址设置在IP白名单中(位置在:开发->基本配置)

PHP微信公众号网页获取用户信息_第1张图片

(3)配置网页授权的域名

PHP微信公众号网页获取用户信息_第2张图片


至此微信公众号配置就完成,下面是程序逻辑处理


一、先获取code;

         需要自己获取的参数

         ①appid  在微信的后台可以获取

         ②redirect_uri   获取当前的访问的网站,可以用php $_SERVER相关参数组合而成

二、code换取网页授权access_token和openid

         需要自己获取的参数

        ①第一步获取的code

        ②appid  在微信的后台可以获取

        ③secret在微信的后台可以获取,需要管理员确认才可以获得获取用户信息

三、获取用户信息

        需要自己获取的参数

       ①第二步获取的access_token

       ②第二步获取的openid


上面实现的基本逻辑,下面是具体的方法


一、获取code

主要为组合当前的网址;实现方法如下:

注意:返回url需要用urlencode做处理,

/**

 * 获取当前的url 地址

 * @return type

 */

private function get_url(){

    //$_SERVER['SERVER_PORT']服务器所使用的端口,判断是否为443端口,443端口主要是用于HTTPS服务。

    $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';

    $php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];

    $path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';

    $relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : $path_info);

    return $sys_protocal.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '').$relate_url;

}

弄好参数就这里可以直接跳转:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=“你公众号的appid”&redirect_uri=“方法处理完获得的url”
&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

只需改动中文字部分即可;

 

二、第一步跳转处理完,其实还是返回当前的url,只是这时候就有code等参数,

程序需要判断是否带code,然后用code去获取access_token和openid

在这步基本不用自己处理参数。

和第一步不同的是,这个时候不能直接跳转,而是需要用类似访问api的方式进行获取你需要的参数

PHP的curl方法,这里不懂的可以百度curl get方法。这里不展开讲这个,主要讲这个链接的组合

https://api.weixin.qq.com/sns/oauth2/access_token?appid=“公众号的appid”&secret=“公众号的secret”
&code=“第一步获取的code”&grant_type=authorization_code

使用curl获取参数,如果你配置正确和程序访问正确,这个时候你就可以获得access_token和用户的openid

 

三、这一步也和第二步差不多

将第二步获得的access_token和用户的openid进行url拼接,再用curl访问获取用户的信息了

https://api.weixin.qq.com/sns/userinfo?access_token=”第二步获取的access_token”&openid=“第二步获取的openid”
&lang=zh_CN

能获得的用户信息,微信手册是写这么多,具体根据自己需求来取舍

参数

描述

openid

用户的唯一标识

nickname

用户昵称

sex

用户的性别,值为1时是男性,值为2时是女性,值为0时是未知

province

用户个人资料填写的省份

city

普通用户个人资料填写的城市

country

国家,如中国为CN

headimgurl

用户头像,最后一个数值代表正方形头像大小(有0466496132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。

privilege

用户特权信息,json 数组,如微信沃卡用户为(chinaunicom

unionid

只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。

至此就完成微信公众号网页的授权登录了

 

如若有误或者有其他问题请与我交流:2359582968(微信qq同号)

你可能感兴趣的:(微信公众号开发,php)