安利一个共享IOS账号二次验证短信的解决方案:https://github.com/AppleIdLoginHelper/LoginHelper
众所周知,最近苹果又整幺蛾子了,提供的 apple id
稍不留神就会被永远不看注意事项的睿智用户开启两步认证,当你费劲千辛万苦关闭之后,又会被另一个睿智用户开启。宝贵的时间怎么能花在这种重复的事情上呢?
所以说,要用魔法打败魔法
效果演示
流程简要说明
- 注册或购买一个
apple id
账户(广告位招租) - 购买软件礼品卡喂给
apple id
(广告位招租) - 注册或购买一个
google voice
账户(广告位招租) - 在 appleid.apple.com 登录你的
apple id
开启两步认证 - 绑定手机号时,使用你
google voice
账户持有的号码 - 参考文档,将此项目部署完成,然后将网站链接发给用户
- 用户登录时在网站获取验证码,便可完成登录
注意事项
只需要给一个谷歌账户开启 oauth2.0 。如果你买了持有不同 google voice 号码的谷歌账户,可以根据文末官方教程链接,设置邮件转发,转发到这个开启 oauth2.0 的谷歌账户
配置账户
- 使用你的
google voice
账户登录GCP
控制面板:cloud.google.com - 登录后,在左侧侧边栏找到 api和服务,点击子项 oauth同意屏幕
- 点击右侧的 创建项目 按钮
- 项目名称和位置用默认填写的就行,然后点击创建
- 等待页面加载完成
- User Type 选外部
- 应用名称 随便
- 用户支持地址邮件 选你的账户
- 已获授权的网域 填你的域名
- (如果你的域名是
my.domain.com
这种子域名,填domain.com
就行) - 开发者联系信息 填你的账户
- 范围页面无需设置,直接点击 保存并继续
- 添加测试用户,输入你的
google voice
账户邮箱 - 点击凭据 -> 创建凭据 ->
oauth
- 应用类型:web应用
- 授权js来源 填写你的域名
- (如果你的域名是
my.domain.com
这种子域名,那就填my.domain.com
,!和上面的填法不一样!) - 授权重定向url 填写你的域名,并在末尾加上
/callback
- (如果你的域名是
my.domain.com
这种子域名,那就填my.domain.com/callback
,!和上面的填法不一样!) - 等待创建完成,然后在弹出的对话框中,点击下载
json
文件 - 将文件重命名为
credentials.json
后上传到网站根目录 - 顶部搜索框搜索
gmail api
- 点击第一个搜索结果,点击 启用
配置网站
- 在你的域名控制台添加一个
A
记录指向服务器IP
- 新建一个网站
宝塔用户
- 网站目录加上
/public
- 伪静态选择
thinkphp
- 确保这些函数没有被禁用:
putenv
proc_open
proc_get_status
lnmp.org 用户
- 网站目录加上
/public
- 将
include rewrite/none.conf;
改成include rewrite/thinkphp.conf;
还需要额外执行
sed -i 's/,putenv//g' /usr/local/php/etc/php.ini
sed -i 's/,proc_open//g' /usr/local/php/etc/php.ini
sed -i 's/,proc_get_status//g' /usr/local/php/etc/php.ini
sed -i 's/^fastcgi_param PHP_ADMIN_VALUE/#fastcgi_param PHP_ADMIN_VALUE/g' /usr/local/nginx/conf/fastcgi.conf
lnmp restart
进入网站根目录,然后移除防跨站
chattr -i .user.ini
chattr -i public/.user.ini
rm -rf .user.ini public/.user.ini
拉取代码
git clone https://github.com/AppleIdLoginHelper/LoginHelper .
安装 composer
命令(已安装可跳过)
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
mv composer.phar /usr/local/bin/composer
安装依赖包
composer install
授权
chmod 755 -R *
chown www -R *
复制配置文件
cp .example.env .env
编辑配置文件,配置数据库
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = 你的数据库名称
USERNAME = 数据库用户
PASSWORD = 数据库用户密码
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true
配置其他选项
[OTHER]
AUTO_REFRESH = false
REFRESH_INTERVAL = 5
BLOCK_WEBSITE_LOGIN = false
BLOCK_ICLOUD_LOGIN = false
AUTO_REFRESH
网页自动刷新开关,开启需改为true
REFRESH_INTERVAL
如果开启网页自动刷新,则每隔几秒刷新一次BLOCK_WEBSITE_LOGIN
是否拦截官网登录验证码(appleid.apple.com),开启需改为true
BLOCK_ICLOUD_LOGIN
是否拦截网页icloud登录验证码(icloud.com),开启需改为true
使用 phpmyadmin
或使用命令 mysql
导入数据库结构
/database/verify.sql
进入控制器目录
cd app/controller
编辑文件 Index.php
// 开了 oauth2.0 的 gmail 账户 也是接收其他 gmail 转发邮件的收件箱
$email_address = '';
// '你买的有google voice号的gmail账户' => '(对应下载的软件名称或其他备注) 绑定这个gv号的apple id账户',
$email_correspondence = [
'' => '',
];
$email_address
就是你的google voice
账户$email_correspondence
是为了解决多个apple id
共用一个面板设计的
情境假设
- 你有两个
apple id
,一个可以下载应用app_a
,一个可以下载应用app_b
- 你的
google_voice_1
账户持有的电话号码绑定了可以下载app_a
的apple_id_a
- 你的
google_voice_2
账户持有的电话号码绑定了可以下载app_b
的apple_id_b
- 你开启了
oauth2.0
的google voice
账户是google_voice_1
- 修改
google_voice_2
账户的设置,将邮件转发到google_voice_1
账户 - 那么你应该这么配置上面的代码
$email_address = '<google_voice_1>';
$email_correspondence = [
'<google_voice_1>' => '(app_a) <apple_id_a>',
'<google_voice_2>' => '(app_b) <apple_id_b>',
];
如果你只有一个 apple id
,填写模板是
$email_address = '<google_voice_1>';
$email_correspondence = [
'<google_voice_1>' => '(app_a) <apple_id_a>',
];
填写示范
$email_address = 'appleid@gmail.com';
$email_correspondence = [
'appleid@gmail.com' => '(netflix) apple@icloud.com',
];
在网站目录下执行
php quickstart.php
- 复制生成的链接,在浏览器中粘贴访问
- 选择当前登录的账户
- 会提示 此应用未经 Google 验证
- 点左边的继续(不是那个大的蓝色按钮)
- 授予
gmail
应用访问权限 - 会重定向到你的网站,根据页面提示操作
然后正常情况下应该是返回
Labels:
- CHAT
- SENT
- INBOX
- IMPORTANT
- TRASH
- DRAFT
- SPAM
- CATEGORY_FORUMS
- CATEGORY_UPDATES
- CATEGORY_PERSONAL
- CATEGORY_PROMOTIONS
- CATEGORY_SOCIAL
- STARRED
- UNREAD
大功告成!访问 https://your.domain.com/test 浏览效果吧!
故障排查
mkdir(): permission denied
进入网站根目录,执行
chmod 755 -R *
chown www -R *
未定义数组索引: messages
收件箱需要有至少一封包含关键词 Apple Id
的邮件。一般来说 google voice
收到的短信都会自动转发到 gmail
收件箱中
我想要修改 google voice 账户登录密码
可以,但修改完成后,需要重新执行授权。进入网站根目录,执行:
rm -rf token.json
php quickstart.php
mysql 1366 incorrect string value
更新到最新 commit
即可
方法不存在:app\controller\Index->index()
访问网站的路径是 /test
Token has been expired or revoked.
在GCP控制台将应用发布成正式应用,token便可长期有效
rm -rf token.json
php quickstart.php
账户列显示 unknow
$email_correspondence
配置存在问题,程序不知道邮箱验证码应该分配给哪一个 Apple ID
后续建议
关闭 debug 模式
虽然使用的是最新 thinkphp
版本,但是为了安全,仍建议关闭调试模式
- 进入网站根目录
- 编辑
.env
- 将
APP_DEBUG = true
改成APP_DEBUG = false
修改网站路径
默认路径是 test
,为了确保只有你和用户知道这个地址,建议修改
- 进入网站根目录
- 进入
route
目录 - 编辑
app.php
- 将第一个
test
改成其他字符串
例如,将
Route::get('/test', 'index/test');
改成
Route::get('/amdyes', 'index/test');
暂无评论内容