Github oauth 多个授权回调 URL

32

我想在本地主机和我的在线域上工作,有没有办法在GitHub OAuth设置中插入多个回调?我们如何解决这个问题?

重定向 URL

4个回答

40

我通过在Github上为我的本地开发环境创建一个专用的OAuth应用程序来解决了这个问题。现在我有以下两个OAuth应用程序:

  1. 我的官方OAuth生产应用程序

    • 客户端ID:ABC
    • 客户端密钥:123
    • 授权回调URL:https://example.com/api/v1/security/oauth/github/callback
  2. 我的私人OAuth开发应用程序

    • 客户端ID:XYZ
    • 客户端密钥:456
    • 授权回调URL:https://localhost/api/v1/security/oauth/github/callback

当我在本地配置我的API时,我使用开发应用程序(2)的ID和密钥。而在生产中,我使用官方应用程序(1)的ID和密钥。


7
这是正确的方法。其他任何方式都只是把门当窗。此外,Github应该提供一种指定多个回调函数的方法。 - zookastos

16

坏消息是我们无法在GitHub OAuth设置中插入多个回调函数。

好消息是,我们可以在我们的回调URL下使用多个回调子URL,然后将其重定向(代理)到任何您想要的回调URL。

例如,如果您的回调URL为:domain.com/auth/github/callback,则以下回调URL都是有效的:

  1. domain.com/auth/github/callback/sub-callback-1
  2. domain.com/auth/github/callback/sub-callback-2
  3. domain.com/auth/github/callback/sub-callback-3

等等。

在重定向到带有所有参数的子回调-N后,然后我们可以跳转到任何其他预期的回调URL。


8
我的问题是我希望一个授权回调URL可以在本地工作https://localhost/auth/github/callback,另一个可以在生产中使用https://example.net/auth/github/callback。根据您上面所描述的内容,是否可以实现这一点? - Alexis.Rolland
2
我认为可以这样做。我相信你可以设置一个 https://example.net/auth/github/callback-localhost,然后让你的服务器将其重定向到 localhost 来实现这个目标。 - Huan
仔细想想,我不认为这是一个好的解决方案,因为如果我将我的OAuth应用程序配置为使用https://example.net/auth/github/callback进行生产,那么这意味着我必须更改生产环境中我的Web服务器的配置以重定向到https://localhost/auth/github/callback。对吗?我在下面提出了另一种解决方案。你觉得怎么样? - Alexis.Rolland

2

不要使用localhost,你可以修改hosts文件并将你的域名指向127.0.0.1。在Mac上,打开位于以下位置的hosts文件:

Computer > Macintosh HD > etc

添加您的域名条目。例如,如果您的域名是mycoolapp.com。
127.0.0.1 mycoolapp.com

当您想使用生产服务器进行测试时,请确保将此行注释掉:

#127.0.0.1 mycoolapp.com

使用这个解决方案,您不需要维护两个单独的配置。

1
根据他们的文档,您不需要注册本地主机重定向URL,但只要其主机部分为localhost,它就接受URL,即使它与注册的URL不匹配。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接