Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
hello_uni-id-pages
提交
5c3b009b
H
hello_uni-id-pages
项目概览
DCloud
/
hello_uni-id-pages
通知
1054
Star
31
Fork
43
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
2
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hello_uni-id-pages
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
5c3b009b
编写于
9月 21, 2022
作者:
C
chenruilong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化 绑定手机号支持微信新版本接口 phonenumber.getPhoneNumber, 增加 code 参数
上级
0d126160
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
61 addition
and
18 deletion
+61
-18
uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/weixin.js
...ges/uniCloud/cloudfunctions/uni-id-co/lib/utils/weixin.js
+13
-1
uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/bind-mobile-by-mp-weixin.js
...tions/uni-id-co/module/relate/bind-mobile-by-mp-weixin.js
+48
-17
未找到文件。
uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/lib/utils/weixin.js
浏览文件 @
5c3b009b
...
@@ -177,10 +177,22 @@ async function getWeixinCache ({
...
@@ -177,10 +177,22 @@ async function getWeixinCache ({
})
})
}
}
async
function
getWeixinAccessToken
()
{
const
weixinPlatform
=
getWeixinPlatform
.
call
(
this
)
const
appId
=
this
.
getClientInfo
().
appId
const
cache
=
await
this
.
uniOpenBridge
.
getAccessToken
({
dcloudAppid
:
appId
,
platform
:
'
weixin-
'
+
weixinPlatform
})
return
cache
.
access_token
}
module
.
exports
=
{
module
.
exports
=
{
decryptWeixinData
,
decryptWeixinData
,
getWeixinPlatform
,
getWeixinPlatform
,
generateWeixinCache
,
generateWeixinCache
,
getWeixinCache
,
getWeixinCache
,
saveWeixinUserKey
saveWeixinUserKey
,
getWeixinAccessToken
}
}
uni_modules/uni-id-pages/uniCloud/cloudfunctions/uni-id-co/module/relate/bind-mobile-by-mp-weixin.js
浏览文件 @
5c3b009b
...
@@ -7,8 +7,10 @@ const {
...
@@ -7,8 +7,10 @@ const {
}
=
require
(
'
../../common/constants
'
)
}
=
require
(
'
../../common/constants
'
)
const
{
const
{
decryptWeixinData
,
decryptWeixinData
,
getWeixinCache
getWeixinCache
,
getWeixinAccessToken
}
=
require
(
'
../../lib/utils/weixin
'
)
}
=
require
(
'
../../lib/utils/weixin
'
)
const
{
initWeixin
}
=
require
(
'
../../lib/third-party
'
)
const
{
ERROR
}
=
require
(
'
../../common/error
'
)
/**
/**
* 通过微信绑定手机号
* 通过微信绑定手机号
...
@@ -16,6 +18,7 @@ const {
...
@@ -16,6 +18,7 @@ const {
* @param {Object} params
* @param {Object} params
* @param {String} params.encryptedData 微信获取手机号返回的加密信息
* @param {String} params.encryptedData 微信获取手机号返回的加密信息
* @param {String} params.iv 微信获取手机号返回的初始向量
* @param {String} params.iv 微信获取手机号返回的初始向量
* @param {String} params.code 微信获取手机号返回的code
* @returns
* @returns
*/
*/
module
.
exports
=
async
function
(
params
=
{})
{
module
.
exports
=
async
function
(
params
=
{})
{
...
@@ -26,30 +29,58 @@ module.exports = async function (params = {}) {
...
@@ -26,30 +29,58 @@ module.exports = async function (params = {}) {
* 因此此接口不应直接使用客户端login获取的code,只能使用缓存的sessionKey
* 因此此接口不应直接使用客户端login获取的code,只能使用缓存的sessionKey
*/
*/
const
schema
=
{
const
schema
=
{
encryptedData
:
'
string
'
,
encryptedData
:
{
iv
:
'
string
'
required
:
false
,
type
:
'
string
'
},
iv
:
{
required
:
false
,
type
:
'
string
'
},
code
:
{
required
:
false
,
type
:
'
string
'
}
}
}
const
{
const
{
encryptedData
,
encryptedData
,
iv
iv
,
code
}
=
params
}
=
params
this
.
middleware
.
validate
(
params
,
schema
)
this
.
middleware
.
validate
(
params
,
schema
)
if
((
!
encryptedData
&&
!
iv
)
&&
!
code
)
{
return
{
errCode
:
ERROR
.
INVALID_PARAM
}
}
const
uid
=
this
.
authInfo
.
uid
const
uid
=
this
.
authInfo
.
uid
const
sessionKey
=
await
getWeixinCache
.
call
(
this
,
{
let
mobile
uid
,
if
(
code
)
{
key
:
'
session_key
'
// 区分客户端类型 小程序还是App
})
const
accessToken
=
await
getWeixinAccessToken
.
call
(
this
)
if
(
!
sessionKey
)
{
const
weixinApi
=
initWeixin
.
call
(
this
)
throw
new
Error
(
'
Session key not found
'
)
const
res
=
await
weixinApi
.
getPhoneNumber
(
accessToken
,
code
)
mobile
=
res
.
purePhoneNumber
}
else
{
const
sessionKey
=
await
getWeixinCache
.
call
(
this
,
{
uid
,
key
:
'
session_key
'
})
if
(
!
sessionKey
)
{
throw
new
Error
(
'
Session key not found
'
)
}
const
res
=
decryptWeixinData
.
call
(
this
,
{
encryptedData
,
sessionKey
,
iv
})
mobile
=
res
.
purePhoneNumber
}
}
const
{
purePhoneNumber
:
mobile
}
=
decryptWeixinData
.
call
(
this
,
{
encryptedData
,
sessionKey
,
iv
})
const
bindAccount
=
{
const
bindAccount
=
{
mobile
mobile
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录