我正在构建一个aspnet核心Web应用程序,并希望允许我的用户使用其Spotify帐户进行身份验证。在本地运行时,我设法使身份验证流按预期工作,但是当我部署并使用我的域时,回调URL为:http://127.0.0.1/callback
。
在此处配置外部身份验证:
services.AddAuthentication()
.AddSpotify(options =>
{
options.ClientId = "blahblah";
options.ClientSecret = "blahblah";
options.CallbackPath = "/callback";
options.Scope.Add("user-follow-read");
如您所见,options.CallbackPath
是/callback
,所以我假设它是从服务器附加到托管域的。
我的配置如下:
https://example.com/callback
和http//:localhost:5001/callback
我尝试过:
.UseUrls("https://example.com")
中设置program.cs
是否可以在spotify authentication options
中指定主机,或者在nginx中可以做一些魔术来帮助回调?
谢谢
答案 0 :(得分:0)
您可以尝试将域用于已部署的实例-因此,如果有一个地址需要在网络上加载而不是127.0.0.1,那么您将需要使用该地址,因为这是您的本地计算机,在本地运行时可以正常工作但是一旦部署,您必须改用部署的地址
答案 1 :(得分:0)
我过去使用的组件稍有不同,但是应该应用相同的 ...
对于回调路径,您应该将其设置为:
在Spotify上 -http://[yourlocaldomain]:[port]/signin-spotify -http://yourlocaldomain.com/signin-spotify
您正在使用的组件会将/signin-spotify
设置为CallbackPath
的默认设置,因此您无需在services.AddAuthentication().AddSpotify(options =>...
设置中进行设置。
然后在您的控制器中,“ ExternalLogin”应该看起来像这样……
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult ExternalLogin(string provider, string returnUrl)
{
// Request a redirect to the external login provider
return new ChallengeResult(provider, Url.Action("externallogincallback", "account", new { ReturnUrl = returnUrl }));
}
其中provider
= Spotify
和returnUrl
= 注册完成后您要去的本地路径位置(例如'/ home / welcome')。
在此示例中,登录到Spotify后,用户将返回到account/externallogincallback
。 externallogincallback
进行注册,然后将用户推送到returnUrl
中指定的网址。