【问题标题】:foursquare accsess token C#四方访问令牌 C#
【发布时间】:2016-12-25 09:11:41
【问题描述】:

我在从 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);
}

【问题讨论】:

    标签: foursquare


    【解决方案1】:

    在 C# 中,如果没有用户干预,您无法获得访问令牌,pord911 提供了解决方案。但正如他所说,它仍然令人讨厌。 Foursequare 应该以与 twitter 相同的方式重新设计他们的 Oauth2 Rest API。

    话虽如此,你可能想看看这个作品:https://codeload.github.com/ignatandrei/4SqDayHistory/zip/master

    【讨论】:

      【解决方案2】:

      您的网址似乎拼错了。你有foursquare.com/oaut2,它应该是foursquare.com/oauth2

      另外,请注意您的网址格式错误。它应该是“http://localhost:8080”,而不是“http:localhost:8080”。请务必在您的代码以及在foursquare.com/oauth注册的重定向 URI 中进行更改

      【讨论】:

        【解决方案3】:

        感谢您的回复。但是我解决了一个 webbrowser 对象的问题,该对象在单击按钮时触发,并带有用于获取 access_token 的初始 url。当使用 access_token 将重定向触发到我的“http://localhost ...”url 时,会触发一个 Form_Navigated 事件,处理程序会搜索“access_token”并捕获它。当找到“access_token”时,webbrowser 窗口会自动隐藏,留下您的初始窗口和来自foursquare 的列出数据。仅仅为了获取 access_token 而显示一个空白表格几秒钟看起来有点讨厌,但它可以工作。我在foursquare上找到了这个解决方案。但他们提出了适用于 Android 应用程序的解决方案。这是链接。

        https://github.com/foursquare/android-oauth-example/blob/master/workspace/android-oauth-example/src/com/foursquare/android/oauth/ActivityWebView.java

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-31
          • 2012-03-13
          • 2019-11-11
          • 2019-12-08
          • 2012-05-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多