最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

抖音小程序一鍵獲取手機(jī)號(hào)的實(shí)現(xiàn)思路

 更新時(shí)間:2025年01月23日 11:33:03   作者:Icebreaking丶  
前端通過(guò)code獲取sessionkey,再用sessionkey解密手機(jī)號(hào)加密信息,PHP后端實(shí)現(xiàn)這一過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹抖音小程序一鍵獲取手機(jī)號(hào)功能,感興趣的朋友一起看看吧

前端代碼組件

<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) 思路首先通過(guò)前端的code換取sessionkey 然后通過(guò) 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' => [
                ],
            ]);
        }
    }
    /**
     * 通過(guò)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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 結(jié)合ES6?編寫?JavaScript?設(shè)計(jì)模式中的結(jié)構(gòu)型模式

    結(jié)合ES6?編寫?JavaScript?設(shè)計(jì)模式中的結(jié)構(gòu)型模式

    這篇文章主要介紹了結(jié)合ES6編寫JavaScript?設(shè)計(jì)模式中的結(jié)構(gòu)型模式,設(shè)計(jì)模式是軟件設(shè)計(jì)中常見(jiàn)問(wèn)題的解決方案,這些模式很容易重復(fù)使用并且富有表現(xiàn)力
    2022-07-07
  • 使用 bootstrap modal遇到的問(wèn)題小結(jié)

    使用 bootstrap modal遇到的問(wèn)題小結(jié)

    bootstrap提供了一個(gè)寫好的css文件和js文件然而在使用時(shí)遇到了一下并不是很好的問(wèn)題,今天在使用彈出對(duì)話框時(shí)遇到了一個(gè)這樣的問(wèn)題,今天小編給大家分享下使用 bootstrap modal遇到的問(wèn)題小結(jié),一起看看吧
    2016-11-11
  • 實(shí)現(xiàn)高性能javascript的注意事項(xiàng)

    實(shí)現(xiàn)高性能javascript的注意事項(xiàng)

    JavaScript代碼在web應(yīng)用程序中經(jīng)常用到,但是很多開發(fā)者忽視了一些性能方面的知識(shí),如何編寫高性能javascript代碼呢?接下來(lái),小編跟大家一起學(xué)習(xí)
    2019-05-05
  • js學(xué)習(xí)階段總結(jié)(必看篇)

    js學(xué)習(xí)階段總結(jié)(必看篇)

    下面小編就為大家?guī)?lái)一篇js學(xué)習(xí)階段總結(jié)(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • 前端項(xiàng)目部署后如何提示用戶版本更新詳解

    前端項(xiàng)目部署后如何提示用戶版本更新詳解

    這篇文章主要給大家介紹了關(guān)于前端項(xiàng)目部署后如何提示用戶版本更新的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的工作或者學(xué)習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-03-03
  • JavaScript字符串常用類使用方法匯總

    JavaScript字符串常用類使用方法匯總

    今天的這篇文章就分享幾年以來(lái)總結(jié)的一些最常見(jiàn)和最有用的字符串相關(guān)的方法的例子和簡(jiǎn)要說(shuō)明。便于程序員用于快速參考。當(dāng)然,最有經(jīng)驗(yàn)的開發(fā)人員對(duì)這些操作很熟悉,但我認(rèn)為這是一個(gè)很好的方法幫助初學(xué)者理解這些函數(shù),他可以幫助你使用簡(jiǎn)單的語(yǔ)法,完成復(fù)雜的操作.
    2015-04-04
  • 基于js文件加載優(yōu)化(詳解)

    基于js文件加載優(yōu)化(詳解)

    下面小編就為大家分享一篇基于js文件加載優(yōu)化(詳解),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • SharedWorker?多頁(yè)面相互通信示例詳解

    SharedWorker?多頁(yè)面相互通信示例詳解

    這篇文章主要為大家介紹了SharedWorker?多頁(yè)面相互通信示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • setTimeout 不斷吐食CPU的問(wèn)題分析

    setTimeout 不斷吐食CPU的問(wèn)題分析

    有時(shí)候我們?cè)谑褂胹etTimeout的時(shí)候會(huì)導(dǎo)致IE特別占用cpu,有可能會(huì)導(dǎo)致死機(jī)等情況。
    2009-04-04
  • javascript如何使用函數(shù)random來(lái)實(shí)現(xiàn)課堂隨機(jī)點(diǎn)名方法詳解

    javascript如何使用函數(shù)random來(lái)實(shí)現(xiàn)課堂隨機(jī)點(diǎn)名方法詳解

    這篇文章主要介紹了javascript如何使用函數(shù)random來(lái)實(shí)現(xiàn)課堂隨機(jī)點(diǎn)名方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

新兴县| 巴青县| 兴城市| 博爱县| 伊吾县| 宜丰县| 东源县| 汽车| 太康县| 朔州市| 清水河县| 兴义市| 龙州县| 永平县| 武川县| 甘谷县| 财经| 长白| 徐水县| 绵阳市| 龙里县| 双峰县| 青川县| 双鸭山市| 香港 | 雷州市| 桑日县| 宁河县| 沁水县| 高州市| 康乐县| 永仁县| 梧州市| 分宜县| 聂拉木县| 武平县| 西吉县| 蓬溪县| 五台县| 合水县| 囊谦县|