微信扫码登陆功能实现

缘由:很简单,公司的帐号登陆须要用到微信扫码登陆与QQ的登陆功能,因此,在作好了微信的扫码登陆以后,本人就写这篇微信扫码登陆功能实现的教程php

教程开始web

须要用到的网站:json

  1. https://open.weixin.qq.com/ 微信开放平台
  2. https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=a655e356d87d4d330ed5cbaf1324389741826089&lang=zh_CN 微信开放平台文档

准备工做:api

1. 首先固然登陆这个微信开放平台啦,否则怎么作扫码登陆的功能数组

2. 新建一个应用浏览器

3. 新建完应用后是这样子的服务器

4. 进行开发者认证,1年300RMB,以前开发的时候没有进行开发者认证,微信那边一直说我有错误,后面又google又百度的,直到认证后,才正常开发微信

5. 设置回调地址,这里的地址至关于回调域名,能够不用详细到访问的方法内(例:http://www.baidu.comapp

准备工做完成,正式开发curl

1. 写一个获取服务器返回数据的自定义函数或者使用PHP的 file_get_content 函数

这里的自定义函数的使用CURL

PHP CURL
//php curl(GET)请求
public function curlGet($url){
    if(empty($url)){
        return false;
    }
    $output = '';

    $ch = curl_init();
    $str =$url;
    curl_setopt($ch, CURLOPT_URL, $str);
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
    $output = curl_exec($ch);
    return $output;
}

2. 浏览器打开网址,这个网址是一张二维码图片,二维码的信息则是你建立的应用信息

网址:https://open.weixin.qq.com/connect/qrconnect?appid=appid&redirect_uri=redirect_uri&response_type=code&scope=snsapi_login&state=state

参数 是否必须 说明
appid 应用中的APPID
redirect_uri 这是回调地址,先要在受权回调域设置回调的域名地址,而后这里填写的是回调域名下须要访问的方法(这里须要使用编码 URL 字符串函数urlencode())
response_type code固定参数
scope snsapi_login 固定参数, 这里有多个参数,能够用 ‘ , ’分隔,当前仅仅作微信登陆,则填写snsapi_login这个参数
state 能够不填,用于防止csrf攻击,你发送什么参数,服务器则返回什么参数给你

3. 用微信的扫一扫获取二维码中的code参数

参数 说明
code code参数
state 用于防止csrf攻击,你发送什么参数,服务器相应返回什么参数给你

4. 发送ACCESS_TOKEN获取请求

使用 curlGet() 自定义函数访问如下网址

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

参数 是否必须 说明
appid 应用中的APPID
secret 应用中的AppSecret
code 上一步所得到的code参数
grant_type authorization_code 固定参数

5. 获取ACCESS_TOKEN参数

参数 说明
access_token 接口调用凭证
expires_in access_token接口调用凭证超时时间
refresh_token 用户刷新access_token
openid 受权用户惟一标识
scope snsapi_login 固定参数,用户受权的做用域,使用逗号(,)分隔
unionid 已得到该用户的userinfo受权时,才会出现该字段。

6. 发送获取OPENID请求

使用 curlGet() 自定义函数访问如下网址

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

参数 是否必须 说明
access_token 接口调用凭证
openid 受权用户惟一标识

7. 获取用户信息

参数 说明
openid 受权用户惟一标识
nickname 微信用户呢称
sex 性别
province 省份
city 城市
country 国家
headimgurl 微信头像地址 最后一个数值表明正方形头像大小(有0、4六、6四、9六、132数值可选,0表明640*640正方形头像),用户没有头像时该项为空
privilege 用户特权信息,json数组
unionid 用户统一标识。针对一个微信开放平台账号下的应用,同一用户的unionid是惟一的

结语

到这里你已经成功的获取到你微信的对外信息了,你能够根据公司的开发需求开发出你所须要的微信扫码登陆功能

原连接:

https://my.oschina.net/u/3554366/blog/1506955