2012-11-08 44 views
0

我有一個從FourSquare爲我的C#桌面應用程序獲取訪問令牌的問題。我在他們的網站註冊了我的應用程序,並獲得了客戶端ID和密碼。對於我的回調網址,我把http..localhost:8080。我不知道該說什麼,我知道它沒有多大意義,但它是存在的。foursquare accsess token C#

我找到了一種方法來獲取訪問令牌與我的瀏覽器。當我嘗試以下網址:

https://foursquare.com/oauth2/authenticate?client_id=MY_CLIENT_ID&response_type=token&redirect_uri=https:localhost:8080/ 

它試圖重定向到:

HTTP:本地主機:8080/accsess_token = OBTAINED_ACCSESS_TOKEN

所以你去,我得到了我的訪問令牌。現在,我想從我的C#看着響應頭做在我的C#代碼一些類似的事情,並在Location頭應該有:

HTTP:本地主機:8080/accsess_token = OBTAINED_ACCSESS_TOKEN

但我有一個問題,在響應中沒有位置標題。當我在瀏覽器中看到HttpFox中的響應標題時,在響應中有一個位置標題和我的鏈接。

我在這裏發佈了迄今爲止我所做的工作,而且我在這裏打了一堵磚牆。如果有人知道任何其他方式從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); 
} 

回答

0

看起來你拼錯了網址。你有foursquare.com/oaut2,當它應該閱讀foursquare.com/oauth2

此外,請注意,你有一個格式不正確的URL。它應該是「http:// localhost:8080」,而不是「http:localhost:8080」。請務必在您的代碼以及您的註冊重定向URI中進行更改foursquare.com/oauth

0

感謝您的回覆。但是我用一個webbrowser對象解決了這個問題,該對象通過點擊按鈕觸發,獲取access_token的初始url。當使用access_token向我的「http:// localhost ...」網址發起重定向時,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