(OAuthException – #2500)必须使用活动访问令牌来查询有关当前用户的信息

string accessToken = GetAccessToken(); string accessKey = accessToken.Split('=')[1]; var client = new FacebookClient(accessKey); dynamic me = client.Get("me"); 

这是获取访问令牌的方法,它确实返回了一个有效的访问令牌

 private static string GetAccessToken() { // Create a request using a URL that can receive a post. WebRequest request = WebRequest.Create("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=201193246663533&client_secret=secretkeyhere"); // Set the Method property of the request to POST. request.Method = "POST"; // Create POST data and convert it to a byte array. string postData = "This is a test that posts this string to a Web server."; byte[] byteArray = Encoding.UTF8.GetBytes(postData); // Set the ContentType property of the WebRequest. request.ContentType = "application/x-www-form-urlencoded"; // Set the ContentLength property of the WebRequest. request.ContentLength = byteArray.Length; // Get the request stream. Stream dataStream = request.GetRequestStream(); // Write the data to the request stream. dataStream.Write(byteArray, 0, byteArray.Length); // Close the Stream object. dataStream.Close(); // Get the response. WebResponse response = request.GetResponse(); // Display the status. Console.WriteLine(((HttpWebResponse)response).StatusDescription); // Get the stream containing content returned by the server. dataStream = response.GetResponseStream(); // Open the stream using a StreamReader for easy access. StreamReader reader = new StreamReader(dataStream); // Read the content. string responseFromServer = reader.ReadToEnd(); // Display the content. Console.WriteLine(responseFromServer); // Clean up the streams. reader.Close(); dataStream.Close(); response.Close(); return responseFromServer; } 

但是,当我调试时

 dynamic me = client.Get("me"); 

抛出此exception:

(OAuthException – #2500)必须使用活动访问令牌来查询有关当前用户的信息。

我怎样才能解决这个问题?

您将获得APPLICATION的访问令牌,而不是用户。 因此,“我”没有意义。 您应该在那里提供ID – 您的用户ID,或您的应用ID,或您的应用拥有权限的任何其他ID。

两个调用都适用于您的示例:

 dynamic me = client.Get("1000<>5735"); dynamic theApp = client.Get("201193246663533");