uniapp一键登陆(php)
生活随笔
收集整理的這篇文章主要介紹了
uniapp一键登陆(php)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
后臺PHP代碼
/*** 一鍵登陸*/public function phoneLogin(){$access_token = $_POST['access_token'];$openid = $_POST['openid'];if (!$access_token && !$openid){$this->weberror(self::THIS_ACTION_ERROR,'參數錯誤');}$secret = '';$params = array('access_token' => $access_token,'openid' =>$openid);$stringSignTemp = '';foreach ($params as $k => $v){$stringSignTemp .= $k . '=' . $v . '&';}$stringSignTemp = rtrim($stringSignTemp, '&');$sign = hash_hmac('sha256', $stringSignTemp, $secret);$url = "https://tcb-kz54q4wey3ivqxv8bbcb6-c4fd02.service.tcloudbase.com/getPhoneNumber?sign=".$sign."&".$stringSignTemp;$response = json_decode(file_get_contents($url),true);if ($response){$mobile = $response['phoneNumber'];$user = M('user')->where(array('mobile'=>$mobile))->find();if (!$user){$data['session_id'] = session_id();$data['login_time'] = time();$data['reg_time'] = time();$data['mobile'] = $mobile;$data['username'] = $mobile;$data['password'] = "";$data['login_ip'] = get_client_ip();$data['token'] = $this->createtoken();$newid = M('user')->add($data);if ($newid) {$this->get_reward_goldcoin($newid,'reg_reward');//注冊獎勵$_user = M('user')->where(array('mobile'=>$mobile))->find();$this->memberlogin($_user['mobile'],$_user['password'],get_client_ip());}}elseif ($user){$this->memberlogin($user['mobile'],$user['password'],get_client_ip());}else{session("ses_uid",NULL);session("ses_mobile",NULL);$this->weberror(self::THIS_ACTION_ERROR,'登陸失敗');}}else{$this->weberror(self::THIS_ACTION_ERROR,'獲取信息失敗');}}云函數
// 云函數驗證簽名,此示例中以接受GET請求為例作演示 const crypto = require('crypto') module.exports = async(event){const secret = 'your-secret-string' // 自己的密鑰不要直接使用示例值,且注意不要泄露const hmac = crypto.createHmac('sha256', secret);let params = event.queryStringParametersconst sign = params.signdelete params.signconst signStr = Object.keys(params).sort().map(key => {return `${key}=${params[key]}`}).join('&')hmac.update(signStr);if(sign!==hmac.digest('hex')){throw new Error('非法訪問')}const {access_token,openid} = paramsconst res = await uniCloud.getPhoneNumber({provider: 'univerify',appid: 'xxx', // DCloud appid,不同于callFunction方式調用,使用云函數Url化需要傳遞DCloud appid參數apiKey: 'xxx', // 在開發者中心開通服務并獲取apiKeyapiSecret: 'xxx', // 在開發者中心開通服務并獲取apiSecretaccess_token: access_token,openid: openid})// 返回手機號給自己服務器return res }獲取的結果:
“{“code”:0,“success”:true,“phoneNumber”:“x******”}”
總結
以上是生活随笔為你收集整理的uniapp一键登陆(php)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序登陆
- 下一篇: php读取word中的内容