Skip to content
This repository has been archived by the owner on Jul 26, 2023. It is now read-only.

卡在第三步,Store Token 无法保存 #232

Answered by spencerwooo
txyyh asked this question in Q&A
Discussion options

You must be logged in to vote

首先讲一下怎么通过你给到的 debug 信息判断问题出在哪里:

  1. 跟网络环境没有关系;
  2. 看 Chrome DevTools 的报错就可以判断了 - 是 obfuscateToken 这里出的问题,因为最后 Object.encrypt 报的错;
  3. 为什么是在这点按钮出的错呢 - 因为点这个按钮实际上是 client 先用 obfuscateToken 来给获取到的两个 token 加密,然后通过 POST 发给 server - 后面在 server 端再解密,并保存到 Redis 里面的 - 也就是 client 会调用这个方法,且需要你定义的这个环境变量;
  4. 而之前跟你说了 Next.js client 侧获取环境变量 - Exposing Environment Variables to the Browser - 需要将环境变量前面加上 NEXT_PUBLIC_,否则 browser 无法访问这个环境变量,因此也就是这里你的报错了 - encrypt() 的第二个参数是 null 导致的;

你这里很多后续问题都是自己修改源代码导致的,如果不能自己根据信息来 debug,我还是建议你不要过分修改了。😊

事实上我知道会有 client id 和 client secret 直接未加密(或者加密了跟没加密一样)放在源码的担忧,但是即使是泄露,攻击者也只是能够冒充这个「应用」的身份(也就是冒充 onedrive-vercel-index),没有办法直接访问未授权的 OneDrive API - 这也是 rclone 的做法,是项目开源的一个 mitigation,所以其实也…

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@txyyh
Comment options

Answer selected by txyyh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
question General questions
2 participants