抖音小程序一键获取手机号的实现思路

 更新时间:2025年01月23日 11:33:03   作者:Icebreaking丶  
前端通过code获取sessionkey,再用sessionkey解密手机号加密信息,PHP后端实现这一过程,本文通过实例代码给大家介绍抖音小程序一键获取手机号功能,感兴趣的朋友一起看看吧

前端代码组件

<button 
		v-if="!isFromOrderList"
		class="get-phone-btn" 
		open-type="getPhoneNumber"
		@getphonenumber="onGetPhoneNumber"
	>
		一键获取
	</button>
// 获取手机号回调
		onGetPhoneNumber(e) {
			var that = this	
			tt.login({
				force: true,
				success(res) {
					console.log('获取手机号回调', e)
					if (e.detail.errMsg === 'getPhoneNumber:ok') {
						// 获取成功,调用后端接口解密手机号
						that.decryptPhoneNumber(res.code,e.detail.iv,e.detail.encryptedData)
					} else {
						uni.showToast({
							title: '获取手机号失败',
							icon: 'none'
						})
					}
				},
				fail(res) {
					console.log(`login 调用失败`);
				},
			});
		},
		// 解密手机号 后端PHP进行解密
		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 || '获取手机号失败')
				}
			} catch (error) {
				console.error('解密手机号失败:', error)
				uni.showToast({
					title: error.message || '获取手机号失败',
					icon: 'none'
				})
			}
		}

后端使用的PHP去实现 思路首先通过前端的code换取sessionkey 然后通过 sessionkey解密前端手机号加密信息

    /**
     * 获取抖音小程序手机号
     * @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']];
    }

到此这篇关于抖音小程序一键获取手机号的实现思路的文章就介绍到这了,更多相关抖音小程序一键获取手机号内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 结合ES6 编写 JavaScript 设计模式中的结构型模式

    结合ES6 编写 JavaScript 设计模式中的结构型模式

    这篇文章主要介绍了结合ES6编写JavaScript 设计模式中的结构型模式,设计模式是软件设计中常见问题的解决方案,这些模式很容易重复使用并且富有表现力
    2022-07-07
  • 使用 bootstrap modal遇到的问题小结

    使用 bootstrap modal遇到的问题小结

    bootstrap提供了一个写好的css文件和js文件然而在使用时遇到了一下并不是很好的问题,今天在使用弹出对话框时遇到了一个这样的问题,今天小编给大家分享下使用 bootstrap modal遇到的问题小结,一起看看吧
    2016-11-11
  • 实现高性能javascript的注意事项

    实现高性能javascript的注意事项

    JavaScript代码在web应用程序中经常用到,但是很多开发者忽视了一些性能方面的知识,如何编写高性能javascript代码呢?接下来,小编跟大家一起学习
    2019-05-05
  • js学习阶段总结(必看篇)

    js学习阶段总结(必看篇)

    下面小编就为大家带来一篇js学习阶段总结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 前端项目部署后如何提示用户版本更新详解

    前端项目部署后如何提示用户版本更新详解

    这篇文章主要给大家介绍了关于前端项目部署后如何提示用户版本更新的相关资料,文中通过代码介绍的非常详细,对大家的工作或者学习具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-03-03
  • JavaScript字符串常用类使用方法汇总

    JavaScript字符串常用类使用方法汇总

    今天的这篇文章就分享几年以来总结的一些最常见和最有用的字符串相关的方法的例子和简要说明。便于程序员用于快速参考。当然,最有经验的开发人员对这些操作很熟悉,但我认为这是一个很好的方法帮助初学者理解这些函数,他可以帮助你使用简单的语法,完成复杂的操作.
    2015-04-04
  • 基于js文件加载优化(详解)

    基于js文件加载优化(详解)

    下面小编就为大家分享一篇基于js文件加载优化(详解),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • SharedWorker 多页面相互通信示例详解

    SharedWorker 多页面相互通信示例详解

    这篇文章主要为大家介绍了SharedWorker 多页面相互通信示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • setTimeout 不断吐食CPU的问题分析

    setTimeout 不断吐食CPU的问题分析

    有时候我们在使用setTimeout的时候会导致IE特别占用cpu,有可能会导致死机等情况。
    2009-04-04
  • javascript如何使用函数random来实现课堂随机点名方法详解

    javascript如何使用函数random来实现课堂随机点名方法详解

    这篇文章主要介绍了javascript如何使用函数random来实现课堂随机点名方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论