|
|
@@ -1,22 +1,34 @@
|
|
|
'use strict';
|
|
|
+const crypto = require('crypto')
|
|
|
exports.main = async (event, context) => {
|
|
|
- // event里包含着客户端提交的参数
|
|
|
- const res = await uniCloud.getPhoneNumber({
|
|
|
- appid: '__UNI__BD781B0', // 替换成自己开通一键登录的应用的DCloud appid,使用callFunction方式调用时可以不传(会自动取当前客户端的appid),如果使用云函数URL化的方式访问必须传此参数
|
|
|
- provider: 'univerify',
|
|
|
- apiKey: '28218195fca6f5993e5fe4ac357a281b', // 在开发者中心开通服务并获取apiKey
|
|
|
- apiSecret: 'ee1268e59735aa5fdae6f0df0e9c094a', // 在开发者中心开通服务并获取apiSecret
|
|
|
- access_token: event.access_token,
|
|
|
- openid: event.openid
|
|
|
- })
|
|
|
|
|
|
- console.log('res',res); // res里包含手机号
|
|
|
- // 执行用户信息入库等操作,正常情况下不要把完整手机号返回给前端
|
|
|
- // 如果数据库在uniCloud上,可以直接入库
|
|
|
- // 如果数据库不在uniCloud上,可以通过 uniCloud.httpclient API,将手机号通过http方式传递给其他服务器的接口,详见:https://uniapp.dcloud.net.cn/uniCloud/cf-functions?id=httpclient
|
|
|
- return {
|
|
|
- code: 0,
|
|
|
- message: '获取手机号成功',
|
|
|
- data:res
|
|
|
- }
|
|
|
-}
|
|
|
+ const secret = 'XHB2021198819640123' //密钥,需要和php文件里一致
|
|
|
+ const hmac = crypto.createHmac('sha256', secret)
|
|
|
+
|
|
|
+ let params = event.queryStringParameters
|
|
|
+ const sign = params.sign
|
|
|
+ delete params.sign
|
|
|
+ const signStr = Object.keys(params).sort().map(key => {
|
|
|
+ return `${key}=${params[key]}`
|
|
|
+ }).join('&')
|
|
|
+
|
|
|
+ hmac.update(signStr);
|
|
|
+
|
|
|
+ if(sign!==hmac.digest('hex')){
|
|
|
+ throw new Error('非法访问')
|
|
|
+ }
|
|
|
+
|
|
|
+ const res = await uniCloud.getPhoneNumber({
|
|
|
+ appid: '__UNI__BD781B0', // 替换成自己开通一键登录的应用的DCloud appid,使用callFunction方式调用时可以不传(会自动取当前客户端的appid),如果使用云函数URL化的方式访问必须传此参数
|
|
|
+ provider: 'univerify',
|
|
|
+ apiKey: '28218195fca6f5993e5fe4ac357a281b', // 在开发者中心开通服务并获取apiKey
|
|
|
+ apiSecret: 'ee1268e59735aa5fdae6f0df0e9c094a', // 在开发者中心开通服务并获取apiSecret
|
|
|
+ access_token: event.queryStringParameters.access_token,
|
|
|
+ openid: event.queryStringParameters.openid
|
|
|
+ })
|
|
|
+ if(res.code == 0){
|
|
|
+ return {code: 1,msg: '获取手机号成功',data:{phoneNumber:res.phoneNumber}}
|
|
|
+ }else{
|
|
|
+ return {code: 0,msg: '获取手机号失败'}
|
|
|
+ }
|
|
|
+}
|