2012-04-10 10 views
4
 string accessToken = GetAccessToken(); 
     string accessKey = accessToken.Split('=')[1]; 

     var client = new FacebookClient(accessKey); 
     dynamic me = client.Get("me"); 

に関する情報を照会するために使用されなければならないアクティブなアクセスは、アクセストークンを取得するための方法であり、それはしかし(OAuthException - #2500)トークンは、現在のユーザーここ

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; 
    } 

トークンの有効なアクセスを返しませんA -

(#2500 OAuthException):、私は

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

上でデバッグするときに、この例外がスローされます現在のユーザーに関する情報を照会するには、ctiveアクセストークンを使用する必要があります。

どうすればこの問題を解決できますか?

答えて

6

ユーザーのアクセス権ではなく、アプリケーションのアクセストークンを取得しています。したがって、「私」は意味をなさない。ユーザーID、アプリID、またはアプリに権限がある他のIDのいずれかにIDを入力する必要があります。

両方の呼び出しはあなたの例で働いた:

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

dynamic theApp = client.Get("201193246663533"); 
+0

答えてくれてありがとうしかし、どのように私は要求ごとにユーザーを得るのですが。私は私の情報に興味がない、私はユーザーの情報が欲しい。したがって、あなたが "http://csharpsdk.org/docs/web/getting-started.html"を見ると、私は "私"を使用する必要があると言います。 – DarthVader

+1

あなたは混乱していると思います。 FB認証ダイアログを表示せずに、ユーザーのアクセストークンを取得することはできません。コードを取得するにはAPPLICATIONトークンがあります。このトークンは、Insightデータの取得やテストユーザーの作成などに使用できます。 USERを認証する場合は、サーバー側のフローまたはJavascript SDKを使用する必要があります。 – avs099

+1

これを確認してください:http://stackoverflow.com/questions/8625708/asp-net-website-authentication-with-facebook/8625873#8625873 - 認証用のサーバー側のフローを理解するのに役立ちます。そして、ここにサーバー側の認証用の公式ページがあります:https://developers.facebook.com/docs/authentication/server-side/ – avs099

関連する問題