.NETページではなくhtmlページでホストされているSilverlightゲームの現在のFacebookユーザーを取得しようとしています。Silverlightゲームは、ハイスコアを送信するためのクレデンシャルとしてIDを使用します。
私のアプリを使ってFacebookにログインしてほしくない。アプリの外でFacebookにログインしてもらいたい。次に、私のアプリはGraph APIの.Get( "me")を使用してチェックします。ただし、.Get( "me")は常にnullを返します。facebookClientにアプリアクセストークンまたはappid+secretがある場合でも。
私はC#facebook sdkバージョン5.4.1.0(SL4サポート用)を使用しています。
これは私がappid+secretを使ってそれをやろうとする方法です:
var app = new Facebook.FacebookClient(appId, appSecret);
app.GetCompleted += new EventHandler<Facebook.FacebookApiEventArgs>(app_GetCompleted);
app.GetAsync("me");
}
void app_GetCompleted(object sender, Facebook.FacebookApiEventArgs e)
{
//the value of me below is always null
var me = e.GetResultData() as IDictionary<string, object>;
string id = (string)me["id"];
}
他のサイトによると、アプリのアクセストークンは、現在のFacebookユーザーのIDを取得するのに十分すぎるはずです。
- Facebook C#SDK現在のユーザーを取得
- http://developers.facebook.com/docs/reference/api/user/
- Facebook C#sdk-FacebookApp.Get( "me")はFacebookにアクセスしますか、それとも単にCookieにアクセスしますか?
- 現在のユーザーのUserIdを取得するための最良の方法は何ですか
- Facebook C#SDKとアクセストークン
現在のFacebookユーザーIDを取得するために私は何を間違っている/誤解していますか?
編集:デバッグ情報
Fiddler2の結果404:
"message": "(#803) Some of the aliases you requested do not exist: clientaccesspolicy.xml",
"type": "OAuthException",
"code": 803
Fiddler2の結果400:
"message": "An active access token must be used to query information about the current user.",
"type": "OAuthException",
"code": 2500
FacebookApiEventArgs e.Error.Message:
Value cannot be null. Parameter name: stream
FacebookApiEventArgs e.Error.StackTrace:
at System.IO.StreamReader..ctor(Stream stream, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean leaveOpen)
at System.IO.StreamReader..ctor(Stream stream)
at Facebook.FacebookClient.ProcessResponse(HttpHelper httpHelper, Stream responseStream, Type resultType, String& responseStr, Exception& exception, Boolean& cancelled)