Facebook使用新的OAuth和C#从网站cookie访问令牌

时间:2011-09-05 22:07:34

标签: c# facebook facebook-graph-api

好吧,所以我已经看到了这个问题,但却找到了一个有效的简单答案。

用户访问我的网站并已使用标准的Facebook登录对话框“授权”我的网站/应用程序 - 使用oauth。

返回我的网站后,用户在他的机器上有一个以“fbsr_%”开头的cookie - 从我正在阅读的内容中被视为“代码”。

我现在要做的就是抓住这个cookie服务器端,打电话给facebook,我发现我应该打电话:“https://graph.facebook.com/oauth/access_token ?CLIENT_ID = {0}&安培; REDIRECT_URI = {1}&安培; client_secret = {2}&安培;代码= {3}“

然后收回accessstoken ...

我希望收到访问令牌,而无需在客户端上重定向用户。所以到目前为止我所拥有的内容如下,从我收集到的内容应该可行,但对我来说它总是给我一个错误“远程服务器返回错误:(400)错误请求。”

string url = "https://graph.facebook.com/oauth/access_token?client_id={0}&redirect_uri={1}&client_secret={2}&code={3}";  
string redirectUri = "http://www.mysite.com/";  
string code = Request.Cookies["fbsr_" + clientId].Value;

WebRequest request = WebRequest.Create(string.Format(url, clientId, redirectUri, clientSecret, code));    
WebResponse response = request.GetResponse();

Stream stream = response.GetResponseStream();  
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");  
StreamReader streamReader = new StreamReader(stream, encode);  
string accessToken = streamReader.ReadToEnd().Replace("access_token=", "");  
streamReader.Close();  
response.Close();  

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

现在Facebook要求应用程序使用SSL,“redirect_uri”需要 https (即https://apps.facebook.com/myapp/),否则您将收到“错误请求”。

access_token(https://graph.facebook.com/oauth/access_token)的“redirect_uri”需要与请求用户登录的代码时的相同连接到您的应用程序(https://graph.facebook.com/oauth/authorize或https://www.facebook.com/dialog/oauth)或者您将收到相同的错误,“错误请求”。

答案 1 :(得分:-1)