抖音小程序一鍵獲取手機(jī)號(hào)的實(shí)現(xiàn)思路
前端代碼組件
<button v-if="!isFromOrderList" class="get-phone-btn" open-type="getPhoneNumber" @getphonenumber="onGetPhoneNumber" > 一鍵獲取 </button>
// 獲取手機(jī)號(hào)回調(diào) onGetPhoneNumber(e) { var that = this tt.login({ force: true, success(res) { console.log('獲取手機(jī)號(hào)回調(diào)', e) if (e.detail.errMsg === 'getPhoneNumber:ok') { // 獲取成功,調(diào)用后端接口解密手機(jī)號(hào) that.decryptPhoneNumber(res.code,e.detail.iv,e.detail.encryptedData) } else { uni.showToast({ title: '獲取手機(jī)號(hào)失敗', icon: 'none' }) } }, fail(res) { console.log(`login 調(diào)用失敗`); }, }); }, // 解密手機(jī)號(hào) 后端PHP進(jìn)行解密 async decryptPhoneNumber(code,iv,encryptedData) { try { const res = await orderApi.decryptPhone({ code: code, iv: iv, encryptedData: encryptedData }) if (res.code === 1 && res.data && res.data.phone) { this.phone = res.data.phone } else { throw new Error(res.msg || '獲取手機(jī)號(hào)失敗') } } catch (error) { console.error('解密手機(jī)號(hào)失敗:', error) uni.showToast({ title: error.message || '獲取手機(jī)號(hào)失敗', icon: 'none' }) } }
后端使用的PHP去實(shí)現(xiàn) 思路首先通過前端的code換取sessionkey 然后通過 sessionkey解密前端手機(jī)號(hào)加密信息
/** * 獲取抖音小程序手機(jī)號(hào) * @param $code * @param $iv * @param $encryptedData * @return \think\response\Json * @throws \GuzzleHttp\Exception\GuzzleException */ public function get_mobile($code, $iv, $encryptedData) { $result = $this->code2Session($code); //解密 $phone = openssl_decrypt(base64_decode($encryptedData, true), 'AES-128-CBC', base64_decode($result['session_key']), OPENSSL_RAW_DATA, base64_decode($iv)); $phone = json_decode($phone, 1); if (isset($phone['phoneNumber']) && $phone['phoneNumber']) { return json([ 'code' => 1, 'msg' => '獲取成功', 'data' => [ 'phone' => $phone['phoneNumber'] ], ]); } else { return json([ 'code' => 0, 'msg' => '獲取失敗', 'data' => [ ], ]); } } /** * 通過code換取 session_key * @param $code * @return array * @throws \GuzzleHttp\Exception\GuzzleException */ public function code2Session($code) { $uri = 'https://developer.toutiao.com/api/apps/v2/jscode2session'; $options = [ 'body' => json_encode([ 'appid' => config('xinghuo_mp.appid'), 'secret' => config('xinghuo_mp.appsecret'), 'code' => $code, 'anonymous_code' => '' ]), 'headers' => [ 'Content-Type' => 'application/json' ] ]; $response = (new \GuzzleHttp\Client)->post($uri, $options); $stringBody = (string)$response->getBody(); $result = json_decode($stringBody, true); return ['openid' => $result['data']['openid'], 'session_key' => $result['data']['session_key']]; }
到此這篇關(guān)于抖音小程序一鍵獲取手機(jī)號(hào)的實(shí)現(xiàn)思路的文章就介紹到這了,更多相關(guān)抖音小程序一鍵獲取手機(jī)號(hào)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- uniapp抖音小程序一鍵獲取用戶手機(jī)號(hào)的示例代碼
- UNIAPP實(shí)現(xiàn)微信小程序登錄授權(quán)和手機(jī)號(hào)授權(quán)功能(uniapp做微信小程序)
- 微信小程序獲取用戶手機(jī)號(hào)碼詳細(xì)教程(前端+后端)
- 微信小程序中獲取用戶手機(jī)號(hào)授權(quán)登錄詳細(xì)步驟
- uniapp微信小程序授權(quán)登錄并獲取手機(jī)號(hào)的方法
- uniapp+.net?core實(shí)現(xiàn)微信小程序獲取手機(jī)號(hào)功能
- PHP配合微信小程序?qū)崿F(xiàn)獲取手機(jī)號(hào)碼詳解
- 微信小程序登錄方法之授權(quán)登陸及獲取微信用戶手機(jī)號(hào)
- 微信小程序獲取用戶手機(jī)號(hào)碼的詳細(xì)步驟
- 微信小程序?qū)崿F(xiàn)手機(jī)號(hào)碼驗(yàn)證
相關(guān)文章
es6基礎(chǔ)學(xué)習(xí)之解構(gòu)賦值
解構(gòu)賦值語法是一個(gè) Javascript 表達(dá)式,這使得可以將值從數(shù)組或?qū)傩詮膶?duì)象提取到不同的變量中。這篇文章主要給大家介紹了關(guān)于es6基礎(chǔ)學(xué)習(xí)之解構(gòu)賦值的相關(guān)資料,需要的朋友可以參考下2018-12-12基于代數(shù)方程庫(kù)Algebra.js解二元一次方程功能示例
這篇文章主要介紹了基于代數(shù)方程庫(kù)Algebra.js解二元一次方程功能,結(jié)合具體實(shí)例形式分析了方程庫(kù)Algebra.js計(jì)算方程的具體使用技巧,需要的朋友可以參考下2017-06-06JS實(shí)現(xiàn)跟隨鼠標(biāo)立體翻轉(zhuǎn)圖片的方法
這篇文章主要介紹了JS實(shí)現(xiàn)跟隨鼠標(biāo)立體翻轉(zhuǎn)圖片的方法,涉及javascript操作圖片翻轉(zhuǎn)的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05JS填寫銀行卡號(hào)每隔4位數(shù)字加一個(gè)空格
這篇文章主要介紹了JS填寫銀行卡號(hào)每隔4位數(shù)字加一個(gè)空格的相關(guān)資料,需要的朋友可以參考下2016-12-12javascript模擬鼠標(biāo)點(diǎn)擊事件原理和實(shí)現(xiàn)方法
本文詳細(xì)介紹了JS模擬鼠標(biāo)點(diǎn)擊事件的原理以及應(yīng)用場(chǎng)景,并提供了模擬鼠標(biāo)左鍵點(diǎn)擊事件、右鍵點(diǎn)擊事件、滾輪事件和移動(dòng)事件的代碼實(shí)現(xiàn),了解JS模擬鼠標(biāo)點(diǎn)擊事件的原理和實(shí)現(xiàn)方法對(duì)于開發(fā)人員非常重要,這對(duì)于許多面向用戶的web應(yīng)用程序的開發(fā)和測(cè)試都具有很重要的意義2023-09-09JavaScript基礎(chǔ)篇之變量作用域、傳值、傳址的簡(jiǎn)單介紹與實(shí)例
這篇文章介紹了變量的作用域,傳值,傳址的一些簡(jiǎn)單使用,有需要的朋友可以參考一下2013-06-06地址欄上的一段語句,改變頁(yè)面的風(fēng)格。(教程)
地址欄中的js改變頁(yè)面的風(fēng)格代碼2008-04-04