2015-12-04 106 views
1

時,獲取完整的url無法正常工作你好堆棧溢出窺探,當url包含#

在實現oAuth系統時有點問題。

//https://github.com/justintv/Twitch-API/blob/master/authentication.md 
public ActionResult AuthorizeTwitch(CancellationToken cancellationToken) { 
    var twitchBridge = new TwitchBridge(); 
    var codes = Request.Params.GetValues("code"); 
    var token = Request.Params.GetValues("access_token"); 

    // stage 1 Initial Handshake 
    if (codes == null && token == null) { 
     return Redirect(twitchBridge.AuthorizeUrl()); 
    } 
    // stage 2 We have a code so we are at stage two request the token 
    else if (codes != null) { 
     return Redirect(twitchBridge.RetrieveToken(codes[0])); 
    } 

    // SAVE OAUTH STUFF DOWN HERE. 
    // THEN REDIRECT 
    return RedirectToAction("Index", "Home"); 
} 

上述行動似乎然而,當工作的階段1和2,但是當我得到重定向到看起來像一個URL的響應形式階段2。

http://localhost:58434/Home/AuthorizeTwitch#access_token=anaccesstoken&scope=user_read 

這個命中我的動作,但我不能訪問access_token的值。我可以訪問Request.Url.OriginalString,但返回字符串看起來像。

http://localhost:58434/Home/AuthorizeTwitch 

調試並查看請求對象和URL對象沒有任何東西似乎從#開始存儲任何內容。我懷疑這與我的網站的路由設置有關。

正在被擊中的相關路線

routes.MapRoute(
    name: "Default2", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

任何一個可以看到我做錯了嗎?

萬一它是與我的實際請求抽搐這是如何建立網址。

public string AuthorizeUrl() { 
    return string.Format(
     "{0}{1}?response_type=code&client_id={2}&redirect_uri={3}&scope={4}", 
     TwitchUrlBase, 
     TwitchAuthorizeMethod, 
     ClientId, 
     HttpUtility.UrlEncode(TwitchAuthorizeRedirectURL), 
     TwitchAuthorizeScope 
    ); 
} 

public string RetrieveToken(string code) { 
    return string.Format(
     "{0}{1}?response_type=token&client_id={2}&client_secret={3}grant_type=authorization_code&redirect_uri={4}&scope={5}", 
     TwitchUrlBase, 
     TwitchAuthorizeMethod, 
     ClientId, 
     ClientSecret, 
     HttpUtility.UrlEncode(TwitchAuthorizeRedirectURL), 
     TwitchAuthorizeScope 
    ); 
} 

回答

1

fragment不應該由客戶端向服務器發送,因此它是有道理的,它不存在。你是否想要發送查詢?

+0

那麼這個url來自我抽取的令牌的迴應。對我來說,這似乎很奇怪,它回到了#哪裏?會使約十億次更有意義,但我認爲服務器應該仍然得到整個網址,所以我應該能夠看到它的請求。 – Spaceman

+0

是否有一些配置告訴Twitch要去哪個URL?這可能需要一個尾隨'?'也許? – James

+0

這是一個好主意,生病檢查 – Spaceman