如果已安装的 GitHub 应用程序无法使用旧令牌,是否有一种获取新令牌的好方法?

问题描述 投票:0回答:1

目前我正在尝试构建一个 Github Pages 站点,该站点将充当用户存储库中数据的编辑器。当用户最初使用该网站时,他们会被引导安装 Github 应用程序,当发生这种情况时,他们会被重定向回该网站,代码位于 url 中。然后,该站点将此代码发送到带有 Gatekeeper 的服务器,令牌被返回,并存储在用户的 cookie 中。根据Github

默认情况下,用户访问令牌将在 8 小时后过期。您可以使用刷新令牌重新生成用户访问令牌。有关更多信息,请参阅“刷新用户访问令牌”。

我同意令牌每 8 小时过期一次,并且我理解您应该使用刷新令牌来刷新它,但问题是我不明白如果应用程序丢失这些令牌会发生什么。如果用户转移到其他浏览器,是否需要卸载并重新安装应用程序?

我的猜测是,也许您可以通过 Oauth 流程发送用户,他们将获得应用程序的刷新令牌,但这会带来您无法判断用户是否已安装该应用程序的问题。因此,执行此操作的唯一方法似乎是通过 Oauth 流程发送用户,使用其中的令牌来检查应用程序是否已安装,然后如果未通过应用程序安装过程发送用户,这似乎可笑。

所以,我的问题是,如果用户身份验证令牌不可用于已安装的应用程序,那么应用程序获取用户身份验证令牌的预期方式是什么?

如果有人能找到任何实现此功能的项目作为示例,那就太好了。

此外,我让用户安装应用程序而不是仅进行身份验证的原因是,这似乎是应用程序访问其私有存储库的唯一方式。

编辑:我在here

找到了此信息

我尝试过这两个 API,但都没有返回私有存储库:

https://api.github.com/users/USERNAME/repos

const apiUrl = 'https://api.github.com/user/repos';
const params = {type: 'private'};

fetch(`${apiUrl}?${new URLSearchParams(params)}`, {
  method: 'GET',
  headers: {
    'Authorization': `token ${accessToken}`,
    'Accept': 'application/json',
  }
})
  .then(response => response.json())
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Error:', error);
});

https://api.github.com/search/repositories?q=user:用户名

const apiUrl = `https://api.github.com/search/repositories?q=user:${username}+is:private`;

fetch(apiUrl, {
  method: 'GET',
  headers: {
    'Authorization': `token ${accessToken}`,
    'Accept': 'application/json',
  }
})
  .then(response => response.json())
  .then(data => {
    console.log(data.items);
  })
  .catch(error => {
    console.error('Error:', error);
  });
});
javascript github github-pages github-app github-oauth
1个回答
0
投票

我没有使用经过身份验证或安装的 GithubApp,而是使用了 OauthApp,它可以访问私有存储库并解决整个问题。

© www.soinside.com 2019 - 2024. All rights reserved.