获取Facebook登录回调C#

时间:2015-09-17 08:28:15

标签: c# facebook facebook-graph-api facebook-sdk-4.0

当我试图访问我从服务器应用程序获取的登录URL时(通过使用FacebookClient.GetLoginUrl),我在其中指定了一个回调网址:

http://example.org:8080/login_success

在该目标上运行了一个HTTP服务器(mydomian.com:8080),在我登录到facebook后,通过重定向接收请求,并授权访问试图代表我使用facebook的应用程序...

问题是我在服务器上收到的GET请求是否有RawUrl = login_succes?但根本没有数据。没有QueryString,没有任何东西......

所以,当我到达loginUrl时,我得到facebook.com/dialog/oauth的提示,他们希望我登录并授予访问请求访问权限的应用程序的权限。到现在为止还挺好。然后,当成功登录时,我应该被重定向到loginurl中指定的RedirectUrl,这看起来很好。问题是我在RedirectUrl目标中收到的GET请求中没有获得任何令牌或内容,并且由于HTTP Server以200 OK响应,因此授予访问权限的客户端现在看到:

example.org:8080/login_success?#access_token=someaccesstokenvalues&expires_in=xxxxx&code=averylongcodestring

我错过了什么?我期望这个access_token,expire值和代码服务器端,而不是在客户端浏览器的URL字段中显示。

1 个答案:

答案 0 :(得分:1)

您可以通过登录对话框的response_type参数指定所需的答案类型。

https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#login

如果设置为token,那么您将获取访问令牌作为URL中的哈希片段 - 这适用于客户端应用。

如果设置为code,那么您将获得一个代码参数,然后您可以通过服务器端请求交换访问令牌。