我在从 FourSquare 为我的 C# 桌面应用程序获取访问令牌时遇到问题。我在他们的网站上注册了我的应用程序并获得了客户端 ID 和秘密 ID。对于我的回调 url,我输入了 http..localhost:8080。我不知道该放什么,我知道它没有多大意义,但它就在那里。
我找到了一种使用浏览器获取访问令牌的方法。当我尝试以下网址时:
https://foursquare.com/oauth2/authenticate?client_id=MY_CLIENT_ID&response_type=token&redirect_uri=https:localhost:8080/
它试图重定向到:
http:localhost:8080/?accsess_token=OBTAINED_ACCSESS_TOKEN
所以你去,我得到了我的访问令牌。现在,我尝试通过查看 C# 中的响应标头在我的 C# 代码中做一些类似的事情,并且在 Location 标头中应该有:
http:localhost:8080/?accsess_token=OBTAINED_ACCSESS_TOKEN
但是我有一个问题,响应中没有 Location 标头。当我在浏览器中查看 HttpFox 中的响应标头时,响应内有一个带有我的链接的 Location 标头。
我已经在这里发布了我到目前为止所做的事情,我在这里碰到了一堵砖墙。如果有人知道从 FourSquare 获取桌面应用程序访问令牌的任何其他方式,或者有解决上述标题问题的方法。请张贴。如果有人对此有答案,我会请他喝啤酒,因为这是我工作任务的一部分。:)
到目前为止,这是我的代码。
string url = "https://foursquare.com/oaut2/authenticate?client_id=E4HFYP1LRDSAL21WJVJ1EBT1NSG1DPRHSNXN0PFI10UIOX0N&response_type=token&redirect_uri=https:localhost:8080/";
HttpWebRequest request = null;
HttpWebResponse response = null;
try
{
request = WebRequest.Create(url) as HttpWebRequest;
response = request.GetResponse() as HttpWebResponse;
request.AllowAutoRedirect = false;
int status = (int)response.StatusCode;
Console.WriteLine("Request headers: ");
Console.WriteLine("-------------------------------------------------------------");
foreach (string s in request.Headers)
{
Console.WriteLine(s + ": " + request.Headers[s]);
}
Console.WriteLine("Response headers: ");
Console.WriteLine("-------------------------------------------------------------");
foreach (string header in response.Headers)
Console.WriteLine(header + ": " + response.Headers[header]);
}
catch (Exception x)
{
Console.WriteLine(x.Message);
}