2011-04-15 118 views
0

经过大约一周的搜索并尝试失败。我终于从代码中生成了正确的Facebook访问令牌。连接到具有访问令牌的新Facebook客户端

但是现在我又遇到了另一个问题。使用该访问令牌来获取用户数据。每次我使用令牌来获取数据,将其与异常返回!String.IsNullOrEmpty(accessToken).

完整堆跟踪:


Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Diagnostics.Contracts.__ContractsRuntime+ContractException: Precondition failed: !string.IsNullOrEmpty(accessToken) 

源错误:

的执行过程中生成了未处理的异常的当前网络请求。关于异常的来源和位置的信息可以使用下面的异常堆栈跟踪来标识。

堆栈跟踪:

[ContractException: Precondition failed: !string.IsNullOrEmpty(accessToken)] 
    Facebook.Web.FacebookWebClient..ctor(String accessToken) +137 
    Facebook_Photo_App._Default.Button1_Click(Object sender, EventArgs e) in Default.aspx.cs:105 
    System.EventHandler.Invoke(Object sender, EventArgs e) +0 
    System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118 
    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112 
    System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563 

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1 

我的代码:

要生成的页面加载访问托克:

string code; 
      code = Request.QueryString["code"]; 
     //TextBox1.Text = code; 

     string token; 

     string url = "https://graph.facebook.com/oauth/access_token?client_id=XXX&redirect_uri=http://apps.facebook.com/dutch-vegas/&client_secret=XXX&code=" + code; 

     WebRequest request = WebRequest.Create(url); 
     WebResponse response = request.GetResponse(); 
     StreamReader reader = new StreamReader(response.GetResponseStream()); 
     token = reader.ReadToEnd(); 
     string decodedtoken = token; 

     TextBox1.Text = decodedtoken; 

     decodedtoken = decodedtoken.Replace("access_token=", ""); 

     int start = decodedtoken.IndexOf("&"); 
     int count = decodedtoken.Length - decodedtoken.IndexOf("&"); 
     decodedtoken = decodedtoken.Remove(start, count); 

在按钮实现访问令牌取用户数据

var client = new FacebookClient(decodedtoken); 


     dynamic me = client.Get("me"); 
     string email = me.email; 
     string firstname = me.first_name; 
     string lastname = me.last_name; 
     string birthday = me.birthday; 

     TextBox1.Text = email; 

一切似乎都正确生成。即使在获取了错误的访问令牌(这比它假设的短得多)之后,我已经整理了一个星期。现在我卡住了。

请帮帮我。我搜索了无数个小时来尝试解决这个问题。

我也注意到在C#SDK的Facebook您可以为

FacebookWebClient, FacebookApp, FacebookClient创建多个实例。

哪一个我可以使用,这可能是我的问题的一部分?

非常感谢提前。 J

回答