如何通过 Apple Watch 解锁 Mac
时间:2023-08-05 06:49:03
如果你使用过带 Touch ID 的 MacBook AIr 或者 MacBook Pro,那么一定会被指纹解锁的便捷性所深深打动。除了解锁 Mac,Touch ID 现在还被 1Password、Day One、MoneyWiz 等第三方 App 用来登录解锁,真的是属于用过就回不去的一个功能。如果你像我一样不愿意信赖一款第三方 App 获得系统密码管理工具的访问权限,那么可以试试我今天介绍的这个方法,前提是你要有一块 Apple Watch,并且保证所有设备都升级到了最新的系统。
这个方案,最关键的一点是 Apple 在 macOS Catalina 中增加了 Apple Watch 的功能,除了在登录的时候解锁,还可以在备忘录 App、Safari 中的密码、系统偏好设置等场景下用来提供授权。虽然 Ulysses 已经提供了通过 Apple Watch 来解锁 App 的功能,但是我不清楚是不是利用了这个新特性,1Password 也至今没有推出这个功能。
所以,这套方案的思路大致如下:
打开 Safari,并依次点击「偏好设置…-密码」,这时候系统会提示你输入密码,你可以直接手动输入密码、使用 Touch ID,也可以通过在 Apple Watch 上双击电源键来解锁;
预先在密码中新增一个登录项,网址可以设置为 1password.com,密码一栏填写为 1Password 的主密码;
选择并聚焦于第一行,这时候密码一列会显示一定长度的密码,所以务必把你的 1Password 主密码设置地「又臭又长」;
打开 1Password 并模拟键盘输入「储存于 Safari 密码中的 1Password 主密码」,然后继续模拟键盘输入「回车键」。
其中,第二点是可以优化的,如果你了解 AppleScript,那么可以尝试让脚本自动搜索到你填写 1Password 主密码的那一行。如果你像我一样不怎么了解,那么不管网址填什么,只要确保这个登录项在按网址排序后位于第一行就行。你只需在 Safari 的「偏好设置-密码」中排序一次,系统就会永远记住你的排序,直到你重新排序。
操作过程
首先,在「系统偏好设置-安全性与隐私-隐私」中的「辅助功能」中确保添加并启用了相关的自动化 App,如 Keyboard Maestro、脚本编辑器、自动操作、LaunchBar、Alfred 等。因为这一套自动化流程是通过 AppleScript 来完成的,所以你可以根据自己的喜好来选择触发的工具。
其次,在「系统偏好设置-安全性与隐私-通用」中勾选「使用您的 Apple Watch 来解锁 App 和 Mac」。
最后,以 Keyboard Maestro 为例,新建一个 macro,trigger 设置为「This hot key」,然后录入自己喜欢的快捷键,action 中使用「Execute an AppleScript」,然后粘贴如下代码:
tell application "Safari"activateend telltell application "System Events" to tell application process "Safari"set frontmost to truedelay 0.1keystroke "," using {command down} set tb to toolbar 1 of window 1set buttonName to (name of button 4 of tb as string) click button 4 of tb tell application "System Events" to tell application process "Safari"set frontmost to trueend tell delay 2 set prefsWin to window 1set theTable to table 1 of scroll area 1 of group 1 of group 1 of prefsWin tell theTable select the row 1set focused to trueset thePass to the value of static text of item 1 of UI element 3 of row 1 do shell script "ps -ef | grep 'Safari' | grep -v grep | awk '{print $2}' | xargs kill -9" do shell script "ps -ef | grep '1Password 7' | grep -v grep | awk '{print $2}' | xargs kill -9" delay 0.1 tell application "1Password 7"activateend tell tell application "System Events" to tell application process "1Password 7"set frontmost to trueend tell delay 1 tell application "System Events" to keystroke thePass tell application "System Events" to key code 36end tellend tell
这里我必须得说明一下,我知道代码写得烂,大家看一下思路就行,有能力的可以自己动手改造,和我一样不太会的可以直接搬用上面的代码到触发工具里使用。
最后的实现效果如下:
免责声明:本方案同样不能保证绝对的安全,请大家根据自己的需求来自行决定是否采用。若出现信息泄漏问题,本人概不负责。