【问题标题】:Authorization when creating a file in Javascript in a GitHub repo using API使用 API 在 GitHub 存储库中创建 Javascript 文件时的授权
【发布时间】:2021-12-31 18:53:08
【问题描述】:

我的目标是使用 GitHub Pages 和一个简单的按钮创建一个静态页面。

当我按下此按钮时,我想在用于 GitHub 页面的同一分支中的同一存储库中创建一个文件。

我阅读了一些关于在获取请求中使用授权令牌来创建文件的信息,所以我创建了我的令牌,我将它放入我用来访问存储库的 GitHub 页面的 index.html 中。

很快我收到了一封来自 GitHub 的电子邮件,告诉我这个令牌已被撤销。

政策描述如下:https://github.blog/2015-02-05-keeping-github-oauth-tokens-safe/

我现在的问题是:我怎样才能完成这项任务?

我使用的sn-p如下:

async function createNewFileFunction() {
    const user =  { name:  'XXX', surname:  'YYY'  };
    const token = 'ghp_abcdefghijklmnopqrstuvwxyz1234567890';
    const api_url = "https://api.github.com/repos/my_account/my_repo/contents/test.txt?ref=gh-pages";
    
    try {
        const response = await fetch(api_url, {
                                                   method: 'POST',
                                                   headers: {
                                                                 'Authorization': `token ${token}`,
                                                                 'Content-Type': 'application/json;charset=utf-8'
                                                            }, 
                                                   body: JSON.stringify(user)
                                               }
                                            );
        console.log(await response.json());
        } catch (error) {
            console.log('Request Failed', error);
        }
    }

【问题讨论】:

    标签: javascript authorization http-post access-token github-api


    【解决方案1】:

    您将令牌放在 index.html 文件中,这意味着全世界都可以看到令牌。这就是为什么您在公开令牌时收到 GitHub 的消息。

    GitHub Pages 不支持后端代码。这意味着一切都是公开的。您不能使用 GitHub Pages 来支持需要令牌的方法。页面中的代码在用户的浏览器中执行。您将需要实现后端代码或使用 GitHub 身份验证。

    后端代码可以是 Web 服务器、AWS Lambda 等云功能或其他一些服务。但是,如果您不使用授权,这将存在安全漏洞,因为任何人都可以调用您的后端端点。

    查看这些链接以进行 GitHub 身份验证。

    GitHub: Basics of authentication

    GitHub Authentication

    【讨论】:

    • 感谢您的回答。是否有另一种方法可以在不使用 Web 服务器上的后端代码的情况下做到这一点?例如:一个已经在 GitHub 中认证的人,可以使用这些凭证将代码推送到我的 repo 上吗?
    • 对不起,我修改了评论,因为我太快按下回车而没有添加我的问题。
    • 那是另一个问题。创建一个包含详细信息的新帖子。您更新评论的方式令人困惑。还有什么用户?其他用户是否在同一浏览器会话中运行 - 您无法在不同的浏览器会话中访问凭据。您可以创建一个通过 GitHub 进行身份验证的应用程序,但这是一个完全不同的主题。
    • 好的,谢谢。我会开一个新话题。
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 2012-04-01
    • 2015-04-07
    • 2023-04-02
    • 2021-05-13
    • 2012-12-15
    • 2016-04-17
    • 2021-09-17
    相关资源
    最近更新 更多