0

.NET FrameworkまたはSilverlightだけを使用して、ユーザーのウォールに投稿するための決定的な方法はありますか?

人々の試みに由来する問題がここSOで尋ねられましたが、Graph API仕様の完全で明確な説明と、WebClientまたはSystem.Netの同様のクラスを使用した簡単な例を見つけることができません。

すべてのフィードアイテムのプロパティをクエリ文字列のパラメータとして送信する必要がありますか?フィードアイテムを表すJSONオブジェクトを作成し、それを送信できますか(アクセストークンを唯一のパラメーターとして)?

5行以内のコードスニペットを期待しています。それ以外の場合は、FBドキュメントの仕様を示してください。

ご協力いただきありがとうございます、

ルーク

4

2 に答える 2

1

.netやsilverlightについてはよくわかりませんが、FacebookAPIは単純なhttpリクエストで機能します。すべての異なるSDK(javascriptを除く)は主に、すべてのリクエストにアクセストークンを追加する「機能」を備えたhttpリクエストの単なるラッパーです。

すべてのリクエストでパラメータがクエリ文字列として送信されるわけではありません。一部のPOSTリクエストでは、リクエスト本文(application / x-www-form-urlencoded)でパラメータを送信する必要があり、データをjsonとして送信することはできません。

C#SDKが気に入らない場合は、正確なニーズに合わせてSDKを作成するだけです。私が書いたように、あなたはリクエストをラップする必要があります、そしてもちろんあなたはパラメータとしてjsonを取得し、リクエストと一緒に送信される異なるパラメータにそれを分割するメソッドを持つことができます。

Facebookのドキュメントを紹介しますが、具体的な質問は何もされていないため、ランディングページ以外に指摘するものはありません。

于 2012-05-08T17:33:50.660 に答える
1

これは、ユーザーのウォールに投稿する方法から取得されます。投稿のデータをリクエスト本文に配置します(リクエストのクエリ部分にすべてのパラメーターを含めるよりも信頼性が高いと思います)。これは、URLエンコードされたクエリ文字列と同じ形式です。

私は、ドキュメントが多くのリソースと対話する方法を説明するのにかなり貧弱であることに同意します。通常、フィールドと接続に関する情報についてドキュメントを確認し、Graph API Explorerを使用して、リクエストを作成する方法を理解します。それを理解したら、C#などで実装するのは非常に簡単です。私が使用しているSDKは、FacebookのJavascriptSDKだけです。他の人(特にサードパーティ)は、自分でロールするよりも複雑で、バグが多く、壊れていることがわかりました。

private void PostStatus (string accessToken, string userId)
{
    UriBuilder address = new UriBuilder ();
    address.Scheme = "https";
    address.Host = "graph.facebook.com";
    address.Path = userId + "/feed";
    address.Query = "access_token=" + accessToken;

    StringBuilder data = new StringBuilder ();
    data.Append ("caption=" + HttpUtility.UrlEncodeUnicode ("Set by app to describe the app."));
    data.Append ("&link=" + HttpUtility.UrlEncodeUnicode ("http://example.com/some_resource_to_go_to_when_clicked"));
    data.Append ("&description=" + HttpUtility.UrlEncodeUnicode ("Message set by user."));
    data.Append ("&name=" + HttpUtility.UrlEncodeUnicode ("App. name"));
    data.Append ("&picture=" + HttpUtility.UrlEncodeUnicode ("http://example.com/image.jpg"));

    WebClient client = new WebClient ();
    string response = client.UploadString (address.ToString (), data.ToString ());
}
于 2012-05-08T17:51:31.747 に答える