捕获 HTTP 307 重定向 URL

Capture HTTP 307 redirect URL

我正在调用 Facebook API 并试图从响应中捕获 访问令牌

当我调用以下 URL:

https://www.facebook.com/dialog/oauth?client_id={client_id}&display=popup&redirect_uri=http://www.facebook.com/connect/login_success.html&response_type=token

我得到一个简短的重定向到 URL,它显示 访问令牌 如果我已经登录,或者在我的浏览器中显示 FB 登录表单:

https://www.facebook.com/connect/login_success.html#access_token={access_token}&expires_in={time}

上面的 URL 只显示了一两秒,最后被重定向到:

https://www.facebook.com/connect/blank.html#_=_

我的问题是,如何在第二个 URL 中捕获 访问令牌

我一直在尝试通过以下方法捕获 URL:

private void FBBrowser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e) {
    String urlResponse = e.Uri.ToString();
    Console.WriteLine("FB URL Response: " + urlResponse);
}

问题是监听器接收到的 URL 是我调用的第一个 URL,而不是响应 URL这就是我所追求的。

(请注意,为了安全起见,我已经从 URL 中删除了 access_token 和 client_id)

附加说明 - 在浏览器中检查请求序列后,我注意到第一个响应是 HTTP 302,然后是 HTTP 307。 307 响应是我需要使用 C# 解析的内容,因为它包含访问令牌。

使用 WPF Web 浏览器控件时,捕获“#”符号后的字符似乎存在问题。这对访问令牌造成了问题,因为它们在 URL:

中返回如下
#access_token='token_code'&expires_in='time'

此博客 post 介绍了使用 System.Windows.Controls.WebBrowser 的解决方法。通过采用这种技术,我终于能够从 URL.

解析访问令牌

我希望这可以帮助 运行 遇到类似问题的其他人。