Authorization when creating a file in Javascript in a GitHub repo using API(使用API在GitHub资源库中使用Java脚本创建文件时的授权)
问题描述
我的目标是用一个简单的按钮创建一个GitHub页面的静态页面。
当我按下此按钮时,我希望在同一个存储库中创建一个文件,该存储库与GitHub页面使用的分支相同。
我读到了一些关于在FETCH请求中用于创建文件的授权令牌的内容,因此我创建了我的令牌,并将其放入用于访问存储库的GitHub页面的index.html中。
很快我收到GitHub的电子邮件,通知我此令牌已被吊销。
策略说明如下:https://github.blog/2015-02-05-keeping-github-oauth-tokens-safe/
我现在的问题是:我如何完成此任务?
我使用的代码片段如下:
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);
}
}
推荐答案
您将令牌放在index.html文件中,这意味着全世界都可以看到该令牌。这就是您在公开令牌时收到GitHub消息的原因。
GitHub页面不支持后端代码。这意味着一切都是公开的。您不能使用GitHub页面来支持需要令牌的方法。页面中的代码在用户的浏览器中执行。您将需要实现后端代码或使用GitHub身份验证。
后端代码可以是Web服务器、云功能(如AWS Lambda)或其他几种服务。但是,如果您没有使用授权,因为任何人都可以调用您的后端终结点,则这有一个安全弱点。查看这些链接以了解GitHub身份验证。
GitHub: Basics of authentication
GitHub Authentication
这篇关于使用API在GitHub资源库中使用Java脚本创建文件时的授权的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用API在GitHub资源库中使用Java脚本创建文件时的授权


- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- 失败的 Canvas 360 jquery 插件 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07