云函数端
'use strict';
exports.main = async (event, context) => {
// event里包含着客户端提交的参数
let {openid,access_token} = event;
const res = await uniCloud.getPhoneNumber({
appid: '__UNI__1FC6043', // 替换成自己开通一键登录的应用的DCloud appid
provider: 'univerify',
access_token: event.access_token,
openid: event.openid
})
console.log(res); // res里包含手机号
// 执行用户信息入库等操作,正常情况下不要把完整手机号返回给前端
// 如果数据库在uniCloud上,可以直接入库
// 如果数据库不在uniCloud上,可以通过 uniCloud.httpclient API,将手机号通过http方式传递给其他服务器的接口,详见:https://doc.dcloud.net.cn/uniCloud/cf-functions?id=httpclient
return {
code: 0,
message: '获取手机号成功',
phoneNumber: res.phoneNumber
}
}
客服端
export default {
data() {
return {
};
},
onLoad() {
},
methods:{
loginPhone(){
uni.getProvider({
service: 'oauth',
success: function (res) {
console.log(res.provider)
}
});
uni.login({
provider: 'univerify',
univerifyStyle: { // 自定义登录框样式
//参考`univerifyStyle 数据结构`
},
success(res){ // 登录成功
console.log(res.authResult); // {openid:'登录授权唯一标识',access_token:'接口返回的 token'}
uni.closeAuthView()
},
fail(res){ // 登录失败
console.log(res.errCode)
console.log(res.errMsg)
}
})
// 在得到access_token后,通过callfunction调用云函数
uniCloud.callFunction({
name: "get_login", // 你的云函数名称
data: {
'access_token': "MDYzMTViN2Y3MmMwMjQzN2MxOGU0ODUxZjYwZGZlNmU3OWQwOWMzYzY3NzBhMTgxNzg2NDIyODQwNTk0ODQyNHx8NXx2Mnw1fGNlZWRkZmU4ODEyZjkyYzA4Mzg5NzRkM2ZjNWU2NThk", // 客户端一键登录接口返回的access_token
'openid': "100gtc_74b1e7a492598fb82dcbad2b1e5f970a61" // 客户端一键登录接口返回的openid
}
}).then(res => {
res.result = {
code: '',
message: ''
}
// 登录成功,可以关闭一键登录授权界面了
uni.closeAuthView()
}).catch(err=>{
// 处理错误
console.log(err)
})
}
}
}

- 发布:2024-07-30 11:59
- 更新:2024-08-01 15:00
- 阅读:306
产品分类: uniCloud/App
示例代码:
操作步骤:
云函数端
'use strict';
exports.main = async (event, context) => {
// event里包含着客户端提交的参数
let {openid,access_token} = event;
const res = await uniCloud.getPhoneNumber({
appid: '__UNI__1FC6043', // 替换成自己开通一键登录的应用的DCloud appid
provider: 'univerify',
access_token: event.access_token,
openid: event.openid
})
console.log(res); // res里包含手机号
// 执行用户信息入库等操作,正常情况下不要把完整手机号返回给前端
// 如果数据库在uniCloud上,可以直接入库
// 如果数据库不在uniCloud上,可以通过 uniCloud.httpclient API,将手机号通过http方式传递给其他服务器的接口,详见:https://doc.dcloud.net.cn/uniCloud/cf-functions?id=httpclient
return {
code: 0,
message: '获取手机号成功',
phoneNumber: res.phoneNumber
}
}
客服端
export default {
data() {
return {
};
},
onLoad() {
},
methods:{
loginPhone(){
uni.getProvider({
service: 'oauth',
success: function (res) {
console.log(res.provider)
}
});
uni.login({
provider: 'univerify',
univerifyStyle: { // 自定义登录框样式
//参考`univerifyStyle 数据结构`
},
success(res){ // 登录成功
console.log(res.authResult); // {openid:'登录授权唯一标识',access_token:'接口返回的 token'}
uni.closeAuthView()
},
fail(res){ // 登录失败
console.log(res.errCode)
console.log(res.errMsg)
}
})
// 在得到access_token后,通过callfunction调用云函数
uniCloud.callFunction({
name: "get_login", // 你的云函数名称
data: {
'access_token': "MDYzMTViN2Y3MmMwMjQzN2MxOGU0ODUxZjYwZGZlNmU3OWQwOWMzYzY3NzBhMTgxNzg2NDIyODQwNTk0ODQyNHx8NXx2Mnw1fGNlZWRkZmU4ODEyZjkyYzA4Mzg5NzRkM2ZjNWU2NThk", // 客户端一键登录接口返回的access_token
'openid': "100gtc_74b1e7a492598fb82dcbad2b1e5f970a61" // 客户端一键登录接口返回的openid
}
}).then(res => {
res.result = {
code: '',
message: ''
}
// 登录成功,可以关闭一键登录授权界面了
uni.closeAuthView()
}).catch(err=>{
// 处理错误
console.log(err)
})
}
}
}
云函数端
'use strict';
exports.main = async (event, context) => {
// event里包含着客户端提交的参数
let {openid,access_token} = event;
const res = await uniCloud.getPhoneNumber({
appid: '__UNI__1FC6043', // 替换成自己开通一键登录的应用的DCloud appid
provider: 'univerify',
access_token: event.access_token,
openid: event.openid
})
console.log(res); // res里包含手机号
// 执行用户信息入库等操作,正常情况下不要把完整手机号返回给前端
// 如果数据库在uniCloud上,可以直接入库
// 如果数据库不在uniCloud上,可以通过 uniCloud.httpclient API,将手机号通过http方式传递给其他服务器的接口,详见:https://doc.dcloud.net.cn/uniCloud/cf-functions?id=httpclient
return {
code: 0,
message: '获取手机号成功',
phoneNumber: res.phoneNumber
}
}
客服端
export default {
data() {
return {
};
},
onLoad() {
},
methods:{
loginPhone(){
uni.getProvider({
service: 'oauth',
success: function (res) {
console.log(res.provider)
}
});
uni.login({
provider: 'univerify',
univerifyStyle: { // 自定义登录框样式
//参考`univerifyStyle 数据结构`
},
success(res){ // 登录成功
console.log(res.authResult); // {openid:'登录授权唯一标识',access_token:'接口返回的 token'}
uni.closeAuthView()
},
fail(res){ // 登录失败
console.log(res.errCode)
console.log(res.errMsg)
}
})
// 在得到access_token后,通过callfunction调用云函数
uniCloud.callFunction({
name: "get_login", // 你的云函数名称
data: {
'access_token': "MDYzMTViN2Y3MmMwMjQzN2MxOGU0ODUxZjYwZGZlNmU3OWQwOWMzYzY3NzBhMTgxNzg2NDIyODQwNTk0ODQyNHx8NXx2Mnw1fGNlZWRkZmU4ODEyZjkyYzA4Mzg5NzRkM2ZjNWU2NThk", // 客户端一键登录接口返回的access_token
'openid': "100gtc_74b1e7a492598fb82dcbad2b1e5f970a61" // 客户端一键登录接口返回的openid
}
}).then(res => {
res.result = {
code: '',
message: ''
}
// 登录成功,可以关闭一键登录授权界面了
uni.closeAuthView()
}).catch(err=>{
// 处理错误
console.log(err)
})
}
}
}
预期结果:
点击一键登录后控制台打印云函数返回的数据,显示登录成功
点击一键登录后控制台打印云函数返回的数据,显示登录成功
实际结果:
使用一键登录功能时控制台只打印“openid”和“access-token”的信息,并不打印云函数返回的信息,但是服务空间显示了云函数的调用次数,一键登录服务的费用也不扣
使用一键登录功能时控制台只打印“openid”和“access-token”的信息,并不打印云函数返回的信息,但是服务空间显示了云函数的调用次数,一键登录服务的费用也不扣
bug描述:
SyntaxError: Unexpected end of input
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1033:15)
at Module._compile (node:internal/modules/cjs/loader:1069:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Me (/tmp/function/index.js:1:85021)
at async Fe (/tmp/function/index.js:1:86102)
请求响应状态: fail
使用一键登录功能时控制台只打印“openid”和“access-token”的信息,并不打印云函数返回的信息,但是服务空间显示了云函数的调用次数,一键登录服务的费用也不扣

m***@qq.com (作者)
请求入参: {
"args": {
"access_token": "MDYzMTViN2Y3MmMwMjQzN2MxOGU0ODUxZjYwZGZlNmU3OWQwOWMzYzY3NzBhMTgxNzg2NDIyODQwNTk0ODQyNHx8NXx2Mnw1fGNlZWRkZmU4ODEyZjkyYzA4Mzg5NzRkM2ZjNWU2NThk",
"openid": "100gtc_74b1e7a492598fb82dcbad2b1e5f970a61",
"clientInfo": {
"PLATFORM": "app",
"OS": "android",
"APPID": "UNI1FC6043",
"DEVICEID": "0BBF5917B387949E20959252D5640FDB",
"channel": "",
"scene": 1001,
"appId": "UNI1FC6043",
"appLanguage": "zh-Hans",
"appName": "CheckIn",
"appVersion": "14.15",
"appVersionCode": 1415,
"appWgtVersion": "1.0.0",
"browserName": "chrome",
"browserVersion": "103.0.5060.129",
"deviceBrand": "oppo",
"deviceId": "0BBF5917B387949E20959252D5640FDB",
"deviceModel": "PJS110",
"deviceOrientation": "portrait",
"devicePixelRatio": 2,
"deviceType": "phone",
"errMsg": "getSystemInfoSync:ok",
"oaid": "ED1FF08C79BB4952991212F5DDB676188508dc569aef4140bd229e3ef2053332",
"osAndroidAPILevel": 33,
"osLanguage": "zh-CN",
"osName": "android",
"osTheme": "light",
"osVersion": "13",
"romName": "ColorOS",
"romVersion": "",
"safeArea": {
"left": 0,
"right": 360,
"top": 0,
"bottom": 686,
"width": 360,
"height": 686
},
"safeAreaInsets": {
"top": 0,
"right": 0,
"bottom": 0,
"left": 0
},
"screenHeight": 762,
"screenWidth": 360,
"statusBarHeight": 32,
"ua": "Mozilla/5.0 (Linux; Android 13; PJS110 Build/TP1A.220905.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/103.0.5060.129 Mobile Safari/537.36 uni-app (Immersed/32.0)",
"uniCompileVersion": "4.15",
"uniPlatform": "app",
"uniRuntimeVersion": "4.15",
"windowBottom": 0,
"windowHeight": 686,
"windowTop": 0,
"windowWidth": 360,
"locale": "zh-Hans",
"LOCALE": "zh-Hans"
}
},
"requestId": "ac1cd3621722309943658187724"
}
[get_login/ac1cd3621722309943658187724/19ms/ERROR] Unexpected end of input
/tmp/function/__index.js:33
SyntaxError: Unexpected end of input
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1033:15)
at Module._compile (node:internal/modules/cjs/loader:1069:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Me (/tmp/function/index.js:1:85021)
at async Fe (/tmp/function/index.js:1:86102)
请求响应状态: fail

m***@qq.com (作者)
-
-
-
-
-
m***@qq.com (作者)
回复 DCloud_uniCloud_CRL: 关联了,要不您加我个微信吧,现在这样不能及时看到您的回复,我的微信:monizhuji
2024-08-01 15:56
-
m***@qq.com (作者)
请求入参: {
"args": {
"access_token": "MDYzMTViN2Y3MmMwMjQzN2MxOGU0ODUxZjYwZGZlNmU3OWQwOWMzYzY3NzBhMTgxNzg2NDIyODQwNTk0ODQyNHx8NXx2Mnw1fGNlZWRkZmU4ODEyZjkyYzA4Mzg5NzRkM2ZjNWU2NThk",
"openid": "100gtc_74b1e7a492598fb82dcbad2b1e5f970a61",
"clientInfo": {
"PLATFORM": "app",
"OS": "android",
"APPID": "UNI1FC6043",
"DEVICEID": "0BBF5917B387949E20959252D5640FDB",
"channel": "",
"scene": 1001,
"appId": "UNI1FC6043",
"appLanguage": "zh-Hans",
"appName": "CheckIn",
"appVersion": "14.15",
"appVersionCode": 1415,
"appWgtVersion": "1.0.0",
"browserName": "chrome",
"browserVersion": "103.0.5060.129",
"deviceBrand": "oppo",
"deviceId": "0BBF5917B387949E20959252D5640FDB",
"deviceModel": "PJS110",
"deviceOrientation": "portrait",
"devicePixelRatio": 2,
"deviceType": "phone",
"errMsg": "getSystemInfoSync:ok",
"oaid": "ED1FF08C79BB4952991212F5DDB676188508dc569aef4140bd229e3ef2053332",
"osAndroidAPILevel": 33,
"osLanguage": "zh-CN",
"osName": "android",
"osTheme": "light",
"osVersion": "13",
"romName": "ColorOS",
"romVersion": "",
"safeArea": {
"left": 0,
"right": 360,
"top": 0,
"bottom": 686,
"width": 360,
"height": 686
},
"safeAreaInsets": {
"top": 0,
"right": 0,
"bottom": 0,
"left": 0
},
"screenHeight": 762,
"screenWidth": 360,
"statusBarHeight": 32,
"ua": "Mozilla/5.0 (Linux; Android 13; PJS110 Build/TP1A.220905.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/103.0.5060.129 Mobile Safari/537.36 uni-app (Immersed/32.0)",
"uniCompileVersion": "4.15",
"uniPlatform": "app",
"uniRuntimeVersion": "4.15",
"windowBottom": 0,
"windowHeight": 686,
"windowTop": 0,
"windowWidth": 360,
"locale": "zh-Hans",
"LOCALE": "zh-Hans"
}
},
"requestId": "ac1cd3621722309943658187724"
}
[get_login/ac1cd3621722309943658187724/19ms/ERROR] Unexpected end of input
/tmp/function/__index.js:33
SyntaxError: Unexpected end of input
at Object.compileFunction (node:vm:352:18)
at wrapSafe (node:internal/modules/cjs/loader:1033:15)
at Module._compile (node:internal/modules/cjs/loader:1069:27)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:1005:19)
at require (node:internal/modules/cjs/helpers:102:18)
at Me (/tmp/function/index.js:1:85021)
at async Fe (/tmp/function/index.js:1:86102)
请求响应状态: fail
帮忙看下,谢谢
2024-07-31 09:42
DCloud_uniCloud_CRL
回复 m***@qq.com: 检查一下云函数代码第33行有没有错误
2024-07-31 11:10
m***@qq.com (作者)
回复 DCloud_uniCloud_CRL: 云函数都没有33行( ˙灬˙ ) ,我上传了两张图片,就是我的代码,可以帮我看一下是哪里出问题了吗,万分感谢(´。✪ω✪。`)
2024-08-01 10:41