使用 API 让用户登录到 spotify
Posted
技术标签:
【中文标题】使用 API 让用户登录到 spotify【英文标题】:Getting Users to login to spotify using the API 【发布时间】:2019-12-03 09:26:00 【问题描述】:我正在尝试创建一个允许用户在 spotify 上创建首选播放列表的应用程序。我正在使用 spotify web api 并构建一个 asp.net mvc 应用程序 (c#)。我正在尝试发出网络请求让用户登录到他们的 spotify 帐户,但由于某种原因,每当我尝试获得响应时,我的应用程序都不会重定向到登录页面。
我自己尝试过创建重定向链接,但 GetResponse() 方法不应该调用重定向本身吗?我是新手,所以我可能错了,但我们将不胜感激。
public IActionResult GetLogin()
string spotifyURL = "https://accounts.spotify.com/authorize/";
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(spotifyURL);
webRequest.Method = "GET";
webRequest.Headers["client_id"] = clientID;
webRequest.Headers["response_type"] = "code";
webRequest.Headers["redirect_uri"] = "https://localhost:44383/home/login";
string json = "";
using (HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader rdr = new StreamReader(stream, Encoding.UTF8))
//should get back a string i can then turn to json and parse for accesstoken
json = rdr.ReadToEnd();
rdr.Close();
bool authorized = true;
if (authorized)
return View("Callback");// token.access_token;
else
return View("Home");
【问题讨论】:
【参考方案1】:据我了解,您正在尝试在 spotify 上 authentificate
。
我可以告诉你,你在使用GET
方法和authentificate
时有一些错误
- 该服务会在JSON
中等待您的POST
,其中包含登录名和密码等帐户数据,如果登录名和密码以及格式正确,它将返回一个带有访问令牌的JSON
。
如何添加 Header 格式: Headers.Add(HttpRequestHeader.ContentType = "application/json");
在此之后,服务器将了解您实际发送给它的内容。
关于代码的最后部分:
bool authorized = true;
if (authorized)
return View("Callback");// token.access_token;
else
return View("Home");
你像空白一样返回Views
这里最好使用
return RedirectToAction("ActionName", "CpntrollerName", new "Here you can pass any value" );
这将允许您重定向到另一个 Controller
和 View
并向其传递一个值。
总结是: 我可以写很长时间,但更好地告诉你应该阅读更多关于如何在 C# 应用程序中使用 API 的真正问题。
在这里,我将提供一些有关 MS 文档的链接:
WebRequest
方法:link
HttpClient
方法:link
关于 HttpClient 我建议只在桌面或移动应用程序上使用它,因为它继承自 .NET Framework
而不是 .NET Core
所以它可能会导致错误,但我没有在我的 ASP.NET Core 上进行测试应用程序,所以不能确定。
小提示:
使用Newtonsoft.Json 它将帮助您序列化您的 JSON 请求并反序列化答案,这比用手或正则表达式更容易。
在向 Web 发出请求时使用 async
和 Task
,因为可能会等待很长时间,并且您不希望您的应用在等待响应之前一直冻结。
【讨论】:
感谢您的帮助!但是我不明白为什么我需要使用 POST 方法来调用身份验证端点?根据已发布的 spotify 授权代码流 (developer.spotify.com/documentation/general/guides/…),身份验证端点是一个 GET 调用,据我了解,我不需要获取用户的登录名和密码,Spotify 服务应该要求这样做吗?跨度> @fullstackmamba 我明白了,它使用内部注册的应用程序并根据它为您提供一个令牌。然后你应该使用Bearer
标头,它在大多数情况下都包含访问令牌。我建议您发布,因为在大多数情况下,如果您构建自己的 API 或使用其他 API,它需要您提供一些数据,例如登录名和密码,这只是解释 API 在大多数情况下如何工作的一部分。在您的情况下,您需要像这样设置GetRequest
的标题:myHttpWebRequest.Headers.Add("Authorization", "Bearer " + AccessToken);
以上是关于使用 API 让用户登录到 spotify的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 spotify web api 获取用户的播放列表列表?
如何使用 Spotify API 和 Spotify SDK [关闭]