微信扫码登录

一、内嵌二维码扫码登录

1.在网页中引入JS文件

http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js

2.在需要使用微信登录的地方实例以下JS对象

 // 1号店示例二维码
 var obj = new WxLogin({
  self_redirect:false,
  id:"login_container", 
  appid: "wxbdc5610cc59c1631", 
  scope: "snsapi_login", 
  redirect_uri: encodeURIComponent("http://"+window.location.host+"/..."), 
  state: Math.ceil(Math.random()*1000), 
  style: "black",
  href: ""
});
参数 是否必须 说明
self_redirect 跳转到redirect_uri的方式
id 显示二维码的容齐
appid 应用唯一标识
socpe 应用授权作用域
redirect_uri 重定向地址
state 保持请求和回调状态
style 二维码样式,black\white
href 自定义样式链接

返回说明:

  • 用户授权后,将会在重定向到redirect_uri的网址上,并且带上codestate参数
redirect_uri?code=CODE&state=STATE
  • 若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数
redirect_uri?state=STATE

3.使用通过以上请求获取到的code来获取access_token

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
参数 是否必须 说明
appid 应用唯一标识
secret 应用密钥
code 上一步获取的code
grant_type authorization_code

正确的返回结果:

{ 
    "access_token":"ACCESS_TOKEN", 
    "expires_in":7200, 
    "refresh_token":"REFRESH_TOKEN",
    "openid":"OPENID", 
    "scope":"SCOPE",
    "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}
参数 说明
access_token 接口调用凭证
expires 超时时间
refresh_token 用户刷新accrss_token
openid 授权用户唯一标识
scope 授权作用域
unionid 网站应用已获得用户授权时才会出现该字段

错误返回结果样例:

{"errcode":40029,"errmsg":"invalid code"}

刷新access_token有效期:

1. 若access_token已超时,那么进行refresh_token会获取一个新的access_token,新的超时时间;
2. 若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token。

4.获取用户信息

/// http请求方式: GET
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID

正确返回结果:

{
    "openid":"OPENID",
    "nickname":"NICKNAME",
    "sex":1,
    "province":"PROVINCE",
    "city":"CITY",
    "country":"COUNTRY",
    "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
    "privilege":[
        "PRIVILEGE1",
        "PRIVILEGE2"
    ],
    "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

unionid是用户统一标识,针对一个账号下的应用,该标识是唯一的。可以保存unionid以便在不用应用中进行信息互通

你可能感兴趣的:(微信扫码登录)