微信用户全局唯一标识_获取微信用户唯一标识openid | 小程序(示例代码)

wx.login(OBJECT)

调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key)。用户数据的加解密通讯需要依赖会话密钥完成。

https://www.w3cschool.cn/weixinapp/weixinapp-api-login.html

OBJECT参数说明:

参数名类型必填说明

success

Function

接口调用成功的回调函数

fail

Function

接口调用失败的回调函数

complete

Function

接口调用结束的回调函数(调用成功、失败都会执行)

success返回参数说明:

参数名类型说明

errMsg

String

调用结果

code

String

用户允许登录后,回调内容会带上 code(有效期五分钟),开发者需要将 code 发送到开发者服务器后台,使用code 换取 session_key api,将 code 换成 openid 和 session_key

示例代码:

//app.js

App({

onLaunch: function() {

wx.login({

success: function(res) {

if (res.code) {

//发起网络请求

wx.request({

url: ‘https://test.com/onLogin‘,

data: {

code: res.code

}

})

} else {

console.log(‘获取用户登录态失败!‘ + res.errMsg)

}

}

});

}

})

code 换取 session_key

?这是一个 HTTPS 接口,开发者服务器使用登录凭证 code获取 session_key 和 openid。其中 session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不应该在网络上传输。

接口地址:

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

请求参数:

参数必填说明

appid

小程序唯一标识

secret

小程序的 app secret

js_code

登录时获取的 code

grant_type

填写为 authorization_code

返回参数:

参数说明

openid

用户唯一标识

session_key

会话密钥

unionid

用户在开放平台的唯一标识符。本字段在满足一定条件的情况下才返回。具体参看UnionID机制说明

返回说明:

//正常返回的JSON数据包

{

"openid": "OPENID",

"session_key": "SESSIONKEY"

"unionid": "UNIONID"

}

//错误时返回JSON数据包(示例为Code无效)

{

"errcode": 40029,

"errmsg": "invalid code"

}

一、基础知识

? 接口地址

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

? 请求参数

appid:小程序的唯一标识

secret:小程序的app secret

js_code:用户的登录凭证code(使用wx.login({})可获取到)

grant_type:填写authorization_code

? 返回参数

expires_in:凭证有效时间,单位:秒

openid:用户唯一标识

session_key:会话密匙(考虑到应用安全,不应该在网络上传输session_key)

二、客户端原理

1、使用小程序登录接口wx.login({})获取用户的登录凭证code

2、使用小程序网络请求API wx.request({})将获取用户登录凭证(code)发送至服务器

示例

/**************************************

* config:小程序配置文件

* loginUrl:服务器地址

* code:返回参数,用户登录凭证

* wx.login({}):登录接口

* wx.request({}):网络请求API

*

* 日期:2017-1-1

**************************************/

var CONGIF=require(‘config‘);

var OBJ_APP_DATA={};

OBJ_APP_DATA[‘onLaunch‘]=function(){

wx.login({

success: (res)=>{

wx.request({

url:CONGIF.loginUrl,

data: {

code:res.code

},

method: ‘GET‘,

success: (res)=>{

console.log(res.data)

},

})

}

})

}

App(OBJ_APP_DATA);

三、服务端php原理

1、使用isset()函数检测客户端是否有传递code参数

示例

if(isset($_GET[‘code‘])){}

2、使用 curl_init()函数初始化一个CURL会话,初始化成功后返回一个句柄供curl_setopt(), curl_exec(),和 curl_close() 函数使用

示例

$curl = curl_init();

3、使用curl_setopt()设置要获取的URL地址

示例

$url=‘https://api.weixin.qq.com/sns/jscode2session?appid=‘.$appid.‘&secret=‘.$secret.‘&js_code=‘.$code.‘&grant_type=authorization_code‘;

curl_setopt($curl, CURLOPT_URL, $url);

4、设置是否输出header

示例

curl_setopt($curl, CURLOPT_HEADER, 1);

5、设置是否输出结果

示例

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

6、设置是否输出结果

示例

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

7、设置是否检查服务器端的证书

示例

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

8、使用curl_exec()将CURL返回的结果转换成正常数据并保存到一个变量

示例

$data = curl_exec($curl);

9、使用 curl_close() 关闭CURL会话

示例

curl_close($curl);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值