我想在我的本地主机和我的实时域中工作,有什么方法可以在 github oauth 设置中插入多个回调?我们如何解决这个问题?
重定向网址
我通过在 Github 上为我的本地开发环境创建一个专用的 OAuth 应用程序来解决这个问题。所以我有以下 2 个 OAuth 应用程序:
-
我的正式OAuth生产应用程序
- 客户端 ID:
ABC
- 客户端密码:
123
- 授权回调网址:
https://example.com/api/v1/security/oauth/github/callback
- 客户端 ID:
-
我的专用 OAuth 开发应用程序
- 客户端 ID:
XYZ
- 客户端密码:
456
- 授权回调网址:
https://localhost/api/v1/security/oauth/github/callback
- 客户端 ID:
在本地配置 API 时,我使用开发应用程序的 ID 和密钥 (2)。在生产中,我使用我的官方应用程序的 ID 和秘密 (1)。
坏消息是我们不能在 GitHub OAuth 设置中插入多个回调。
好消息是我们可以在回调 url 下使用多个回调子 url,然后您可以将其重定向(代理)到您想要的任何回调 URL。
例如,如果您的回调 URL 为:domain.com/auth/github/callback,则以下回调 URL 均有效:
- domain.com/auth/github/callback/sub-callback-1
- domain.com/auth/github/callback/sub-callback-2
- domain.com/auth/github/callback/sub-callback-3
等。
在重定向到包含所有参数的子回调 N 后,我们可以按预期跳转到任何其他回调 URL。
您可以修改主机文件并将域指向使用 127.0.0.1,而不是使用 localhost。在 Mac 上,打开位于以下位置的主机文件:
Computer > Macintosh HD > etc
为您的域添加条目。例如,如果您的域已 mycoolapp.com
127.0.0.1 mycoolapp.com
只需确保在要使用生产服务器进行测试时注释掉此行:
#127.0.0.1 mycoolapp.com
使用此解决方案,您无需维护两个单独的配置。
根据他们的文档,您不需要注册本地主机重定向 URL,但只要其主机部分是 localhost,它就只接受 URL,即使它与注册的 URL 不匹配。