如何使用GitHub应用验证用户身份?

时间:2019-03-19 16:02:30

标签: github

我创建了一个GitHub app

我想使用GitHub应用程序对我的网站的用户进行身份验证。

我的理解是用户首先需要安装该应用程序,即我将用户链接到https://github.com/apps/myapp/installations/new

用户安装应用程序后,使用installation_id GET查询参数将用户重定向到我的应用程序的登录页面。

我使用此installation_idgetInstallationAccessToken创建安装令牌。

我的理解是,现在我需要使用OAuth对用户进行身份验证。因此,我将用户重定向到https://github.com/login/oauth/authorize?client_id=%GITHUB_APP_CLIENT_ID%。由于用户已经安装了我的应用,因此可以立即使用code GET查询参数将用户重定向回到我的网页。

现在,我通过向https://github.com/login/oauth/access_token发出POST请求,使用code参数将其交换为access_code,即

POST https://github.com/login/oauth/access_token

accept:           application/vnd.github.machine-man-preview+json
user-agent:       octokit-request.js/2.4.2 Node.js/11.3.0 (macOS Mojave; x64)
authorization:    token v1.796495[redacted]193c6f
content-type:     application/json; charset=utf-8
Content-Length:   125
Accept-Encoding:  gzip,deflate
Connection:       close
Host:             github.com

{
    "client_id": "Iv1.239e8[redacted]2c07",
    "client_secret": "c35f82e8ed[redacted]e248ba6969",
    "code": "60ee71[redacted]b40f7d"
}

我的问题是,后者总是返回HTTP状态代码406响应(没有响应主体)。

我的问题:

  • 如何为GitHub应用验证用户身份?
  • 如何知道用户是否已经安装了应用程序/如果用户已经安装了应用程序,则将用户重定向到登录页面(无法链接到https://github.com/apps/myapp/installations/new,因为这只会显示配置页面)。

0 个答案:

没有答案