shish 4 éve
szülő
commit
a01b9e19a9

+ 0 - 1
ghsApp/src/admin/ad/add.vue

@@ -117,7 +117,6 @@ import TuiListCell from "@/components/plugin/list-cell";
 import AppUploader from "@/components/app-uploader";
 import AppDatePicker from "@/components/app-date-picker";
 const form = require("@/utils/formValidation.js");
-// api
 import { getDet, add, update } from "@/api/ad";
 import { getDetailB as getGoodsDet } from "@/api/goods";
 export default {

+ 6 - 0
ghsApp/src/api/auth/index.js

@@ -0,0 +1,6 @@
+import https from '@/plugins/luch-request_0.0.7/request'
+
+//本机号码一键登录
+export const phoneLogin = data => {
+	return https.get('/auth/phone-login', data)
+}

+ 6 - 21
ghsApp/src/components/login-model.vue

@@ -27,8 +27,8 @@
     </view>
   </view>
 </template>
-
 <script>
+import { phoneLogin } from "@/api/auth";
 export default {
   props: {
     show: {
@@ -58,26 +58,11 @@ export default {
 							univerifyStyle: { // 自定义登录框样式
 							},
 							success:(res)=>{ // 登录成功
-	              				let openid = res.authResult.openid
-								let access_token = res.authResult.access_token
-								// 客户端(调用云函数)  调用云函数来实现整个业务逻辑
-								// 在得到access_token后,通过callfunction调用云函数
-								uniCloud.callFunction({
-								  name: 'getPhoneNumber', // 你的云函数名称
-								  data: {
-								  	access_token: access_token, // 客户端一键登录接口返回的access_token
-								  	openid: openid // 客户端一键登录接口返回的openid
-								  }
-								}).then(res => {
-									console.log("获取成功")
-									console.log(res)
-								}).catch(err=>{
-								  // 处理错误
-								  console.log("获取失败");
-								  console.log(err);
-								})
-
-
+                let openid = res.authResult.openid
+                let access_token = res.authResult.access_token
+                phoneLogin({openid,access_token}).then(res=>{
+                  console.log(res)
+                })
 							},
 							fail(res){  // 登录失败
 								uni.closeAuthView()//关闭一键登录弹出窗口

+ 31 - 19
ghsApp/uniCloud-aliyun/cloudfunctions/getMobileNumber/index.js

@@ -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: '获取手机号失败'}
+		}
+}

+ 8 - 0
ghsApp/uniCloud-aliyun/cloudfunctions/getMobileNumber/package.json

@@ -0,0 +1,8 @@
+{
+    "cloudfunction-config": {
+        "memorySize": 512,
+        "timeout": 5,
+        "triggers": [],
+        "path": "/getMobileNumber"
+    }
+}