Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

探索 如何把本地的数据保存到 gist 上 #118

Open
cuixiaorui opened this issue Jan 30, 2023 · 3 comments
Open

探索 如何把本地的数据保存到 gist 上 #118

cuixiaorui opened this issue Jan 30, 2023 · 3 comments
Labels
feature new feature

Comments

@cuixiaorui
Copy link
Collaborator

现在的数据是直接保存到用户的浏览器上的

我们期望有一个功能 可以把本地的数据保存到用户的 gist 里面

这样当用户清空浏览器的时候 也可以通过保存在 gist 里面的数据来恢复

流程应该如下:

  1. 用户授权自己的 github
  2. 用户点击按钮后 调用 gist api 把数据保存上去
  3. 数据恢复的时候 可以优先读取用户本地的数据 如果发现本地数据没有的话 那么尝试读取 gist 保存的数据来进行恢复

可以把整个探索的过程记录到这个 issue 下
确实方案可行后 就可以来一个 pr

@cuixiaorui cuixiaorui added the feature new feature label Jan 30, 2023
@JexLau
Copy link
Contributor

JexLau commented Jan 30, 2023

我的理解,gist是做一个备份的作用:

  1. 用户点击同步按钮后,调用 gist api 把数据保存上去(覆盖保存);
  2. 当用户清空浏览器时,也就是数据库不存在,读取gist的数据,把数据同步到本地读取。

@alexzhang1030
Copy link
Collaborator

alexzhang1030 commented Jan 31, 2023

根据 API 文档,以及创建 OAuth 应用文档得知,若想让网站应用关联 Github 用户,需存在以下先决条件:

  • 应用网址
  • 回调地址

纯前端是能够实现的,但是就如 官方 SDK 的警告所言:

@octokit/auth-oauth-app is not meant for usage in the browser. The OAuth APIs to create tokens do not have CORS enabled, and a client secret must not be exposed to the client.

@octokit/auth-oauth-app 并不适用于浏览器,创建 token 的 OAuth API 没有启用 CORS,并且 client secret 将会显式暴露在客户端中

纯前端实现,部分 API 会存在跨域问题,并且秘钥会暴露在客户端中,会很危险。

同时还存在一个问题,若这里纯前端实现了 gist 保存,将会与后续的后端实现完全割裂,到时候就会存在两种储存方式,代码逻辑会很混乱,逻辑也不会很清晰。

那么我认为此功能需等后端实现才行,至少需等待用户相关功能实现才行。将 Github 关联后的用户 Token 与系统内的用户关联一起,将 gistDB 作为两种储存数据的方式供用户选择。

@Nauxscript
Copy link
Collaborator

Nauxscript commented Feb 2, 2023

我的理解,gist是做一个备份的作用:

  1. 用户点击同步按钮后,调用 gist api 把数据保存上去(覆盖保存);
  2. 当用户清空浏览器时,也就是数据库不存在,读取gist的数据,把数据同步到本地读取。

我的想法类似,但要结合后端实现后数据库的方面一起考虑:

  1. 正常的用户数据保存在我们的后端数据库中
  2. 提供备份功能,如 mac 的时间胶囊,用户可以手动触发备份,则把用户在数据库中的数据备份到自己的 github 中
  3. 用户想要恢复 github 的数据到本地时,应该是获取其 github 备份数据,并与本地数据进行合并后(此时如果发生数据冲突则以数据库的数据为准;也可以选择覆盖数据库的数据,则以用户 github 的备份为准),再返回到本地

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature new feature
Projects
None yet
Development

No branches or pull requests

4 participants