我正在尝试在我现有的ASP.NET webforms应用程序中使用Facebook C#SDK。我的意图是允许用户通过单击Facebook链接绕过表单身份验证。该链接上的URL如下..
<a href="https://www.facebook.com/dialog/oauth?client_id=0000000000000&redirect_uri=http://localhost:2708/fboauth.aspx&scope=offline_access">facebook</a>
Facebook处理请求,然后重定向回fboauth.aspx,后面有以下代码......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Facebook;
using System.Net;
using System.IO;
namespace StorageByMail20
{
public partial class fboauth : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string code;
code = Request.QueryString["code"];
Label1.Text = code;
string token;
string url = "https://graph.facebook.com/oauth/access_token?client_id=000000000000000&redirect_uri=http://localhost:2708/fboauth.aspx&client_secret=000000000000000000000000&code=" + code;
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
token = reader.ReadToEnd();
string decodedtoken = HttpUtility.UrlDecode(token);
Facebook.FacebookAPI api = new Facebook.FacebookAPI(decodedtoken);
JSONObject result = api.Get("/first_name");
string name = result.Dictionary["first_name"].String;
Label2.Text = token;
Label3.Text = name;
}
}
}
我在此页面上尝试执行的操作如下:
一切都按照JSON调用的方式工作。如果我注释掉那条线我很好。否则Facebook返回(400)错误请求错误。有人能找到我出错的地方吗?
注意:此处报告的已知错误https://github.com/facebook/csharp-sdk/issues与访问令牌的编码问题有关。我想我用我的UrlDecode来解决这个问题。另外,请注意我正在使用的SDK是来自Facebook的官方版(目前处于Alpha版)。还有一些由社区创建的其他C#SDK。
以下是我在研究问题时发现的一些特别有用的文章。
onishimura.com/2010/08/11/facebook-c-and-asp-net-mvc-code-samples-for-friends-list-activities-list-and-wall-posts /
multitiered.wordpress.com/2010/08/05/getting-started-with-the-facebook-c-sharp-sdk /
*我从上面的链接中删除了“http://”。显然我需要更多的声誉点才能允许我包含两个以上的链接。对不起,伙计们!
答案 0 :(得分:2)
你在Github上链接的SDK不是Facebook C#SDK,它是Facebook提交的一个非常古老且非常错误的提交,然后单独留下。有一个更新,更广泛使用的项目叫做Facebook C#SDK here。
您似乎正在进行大量的工作,可以通过registration plugin或javascript sdk轻松处理(这是开发Facebook Connect网站时的惯例。
如果您在服务器端进行更多Facebook调用,我强烈建议您使用链接的C#SDK。看看样本,看看你需要做多少编码。