PC端微信扫码登录(二)

摘要: 上节我们获得了微信开放平台的AppID,AppSecret,接下来在本节中我们介绍下,微信扫码登录的程序设计

        上节我们获得了微信开放平台的AppID,AppSecret,接下来在本节中我们介绍下,微信扫码登录的程序设计,ShopWind 电商系统 把第三方登录做成插件的形式,包括微信登录,支付宝登录新浪微博登录腾讯QQ登录


    后台配置 AppID,AppSecret。登录网站后台 


TIM截图20180606114628.png


        上面导航点击 扩展 > 插件 > 微信登录 填写 AppID,AppSecret提交,电商系统微信登录配置完成。


        下面简单介绍下代码实现。

        

D0wkkHSbtC6VUSHX4WsjP5ssg5mdnEmXO8NGVGF34dxS9N1WCcq6wvquR4K_Hcut.png


            第一步:请求CODE


            我们在PC端登录页面做微信图标链接,点击图标打开以下链接:

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

这个链接里面的APPID读取我们后台配置的APPIDREDIRECT_URI为回调接收地址。

若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与审核时填写的授权域名不一致或scope不为snsapi_login。


        关键代码片段:

        $data = array(
'gateway'       => 'https://open.weixin.qq.com/connect/qrconnect?',
'AppId' => $this->_config['AppId'],
'AppSecret' => $this->_config['AppSecret'],
'redirect_uri' => urlencode(SITE_URL . "/external/plugins/weixinconnect/callback.php"),
'response_type' => 'code',
'scope' => 'snsapi_login',
'state' => mt_rand()
);
$url = $gateway . "appid=".$AppId."&redirect_uri=".$redirect_uri."&response_type=code&scope=".$scope."&state=".$state."#wechat_redirect";

header("location:$url");


        第二步:通过code获取access_token


        第一步打开链接发起请求后,我们在 callback.php文件中用get接收微信那边发回来的code。通过code和appid,AppSecret,拼接重新发起请求获取access_token。

 $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$AppId}&secret={$AppSecret}&code={$_GET['code']}&grant_type=authorization_code";

$result = file_get_contents($url);

正确返回的结构是:

{
"access_token":"ACCESS_TOKEN", //接口调用凭证
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID", //授权用户唯一标识
"scope":"SCOPE",
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL" //当且仅当该网站应用已获得该用户的userinfo授权时,才会出现该字段。
}

获取返回正确的返回结果后,接收 unionid,access_token。

$unionid = isset($result['unionid']) ? $result['unionid'] : $openid;

$token = $result['access_token'];


            第三步:通过access_token,unionid查询用户信息


            $url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$token."&openid=".$openid;                        $user_info = file_get_contents($url);

            到此$user_info 里面就包含有用户信息,微信头像,微信名称等,后面就是程序逻辑的问题了,ShopWind会跳转到绑定手机号码的页面,绑定完成后插入用户表,并完成登录进入用户中心。微信扫码登录完成,如果有疑问可以联系交流,QQ 1983447904







热搜话题

今日头条

联系我们

  • 微信官网

    关注公众号

    热点资讯,推送提醒
  • 开发交流群

    开发交流Q群

    行业动态,开发交流

垂询热线:18978189162