0

私はFacebook C# SDKを使用しており、それがどのように機能するかを正確に理解しようとしています。私は実際に AJAX Web メソッドを使用して、認証されたユーザー ID に基づいて Facebook アカウントの詳細を検索します。これは次のようになります。

if (response.status === "connected")
{
   KitchenPC.LogonFB(response.authResponse.userID, checkResult, facebookError);
}

サーバー側では、LogonFB Web メソッドは次のような処理を行います。

Client = new FacebookClient(applicationId, applicationSecret);
var result = Client.Get(path) as IDictionary<string, object>;

UserId = Int64.Parse((String)result["id"]);
Name = result["name"] as String;
FirstName = result["first_name"] as String;
LastName = result["last_name"] as String;
Location = result.ContainsKey("location") ? result["location"] as String : "";
Gender = result.ContainsKey("gender") ? result["gender"] as String : "";
Email = result["email"] as String;

pathクライアントから渡されたユーザー ID はどこにありますか。

私の質問:

ASP.NET Web サービスから WCF に切り替えていますが、WCF は Cookie をサポートしていません。実際、HttpContext.CurrentWCF パイプライン内では null になります。Facebook C# SDKは、リクエストで渡される Cookie に依存してfbm_いるという印象を受けました。これは、Facebook サーバーとのセッションを検証するために使用されます。fmsr_しかし、驚いたことに、.Get()呼び出しは引き続き機能し、ユーザー情報が返されます。また、SDK ソース コードを調べましたが、どこにも への参照が見つかりませんHttpContext.Current

Facebook C# SDK は Cookie とは完全に独立して動作しますか? これは、必要なのはユーザーの Facebook ID だけであり、ユーザーが以前に私のアプリ ID を承認している限り、そのアカウントに関する情報を取得できるということですか?

私は何も悪いことをしていないことを確認したいだけで、本番環境で問題が発生することはありません.

4

1 に答える 1

1

appId と appSecret を指定してコンストラクターを渡すと、 を使用してアクセス トークンがアプリ アクセス トークンとして自動設定されますstring.Concat(appId, '|', appSecret)。そのコンストラクターは、SDK の新しいバージョンでは削除されています。https://github.com/facebook-csharp-sdk/facebook-csharp-sdk/issues/103

アクセス トークンが必要ない場合は、null に設定します。

Client = new FacebookClient(applicationId, applicationSecret);
Client.AccessToken = null;
var result = Client.Get(path) as IDictionary<string, object>;
于 2012-12-08T04:46:57.500 に答える