GraphQL 的 GitHub API 身份验证:如果需要身份验证,我如何公开发布我的应用程序?

Posted

技术标签:

【中文标题】GraphQL 的 GitHub API 身份验证:如果需要身份验证,我如何公开发布我的应用程序?【英文标题】:GitHub API Authentication for GraphQL: How do I publish my app publicly if it needs authentication? 【发布时间】:2019-12-29 17:37:10 【问题描述】:

根据 GitHub V4 API,使用 GraphQL 需要身份验证。 GitHub API V4 文档声明如下:

警告:将您的令牌视为密码并对其保密。使用 API 时,请使用令牌作为环境变量,而不是将它们硬编码到您的程序中。

这是可以理解的。但是,我想在 GitHub 上发布我的源代码并将应用程序托管在 GitHub Pages 上。

问题:如果我将身份验证令牌设置为环境变量,实际应用本身在发布后如何能够使用 GraphQL 进行身份验证?不会坏吗?

【问题讨论】:

“在 GitHub Pages 上托管应用程序”是什么意思? AFAIK Github Pages 仅托管静态文件。没有要设置的环境变量。都是javascript吗? 哎呀,是的,我是个菜鸟。到目前为止,我所托管的一个静态站点/简历/博客。我正在开发一个纯 Typescript 的 React 项目,并希望在 GH Pages 上发布它会很容易。 But apparently it's possible 当然,您可以推送任何您喜欢的 html、CSS 和 Javascript;它们只是文件,它们由浏览器执行。但它没有身份验证令牌。使用OAuth。 【参考方案1】:

如果您使用的是服务器端代码,请设置环境变量并完成它。

如果您使用的是 GitHub Pages,you can't host a server-side app。

GitHub Pages 是一种静态站点托管服务,旨在直接从 GitHub 存储库托管您的个人、组织或项目页面。

GitHub Pages 是一种静态站点托管服务,不支持 php、Ruby 或 Python 等服务器端代码。

仅适用于静态文件:HTML、CSS、Javascript。这些在浏览器中执行。没有要设置的环境变量。没有地方可以向用户隐藏秘密。

相反,将其构建为OAuth App。 OAuth 允许用户授权您的网站使用他们的帐户访问 Github API。这就是 Github 自己的 GraphQL API Exporer 的工作原理。

【讨论】:

以上是关于GraphQL 的 GitHub API 身份验证:如果需要身份验证,我如何公开发布我的应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

执行经过身份验证的 keystone.js / GraphQL API 查询

带有 JWT 身份验证实现的 Django GraphQL API 仍然允许来自 Postman 的未经身份验证的请求获取数据。我该如何解决?

在 Graphql 操场上使用 AWS Cognito 用户池对 AppSync 突变进行身份验证

如何使用 GraphQL 构建经过身份验证的查询?

JWT 身份验证:使用 UI 令牌对 Graphene/Django (GraphQL) 查询进行身份验证?

如何在 Graphql 中删除自省查询的身份验证