2012-04-04 7 views
2

を使用してログインfacebookからのFBページのデータを取得、私は掲示板に書き込みを読んでもらいたい、特定のFacebookページのカウントなどのようなメッセージ、(ないFacebookのユーザーのための)私のデスクトップアプリケーションで、C#

Iこの投稿get user data(on stackoverflow)を通過しました。私はFBページのために同じことを達成したい。

これを達成するためのFacebookアプリケーションを作成し、ユーザーにデータを取得する許可を与える準備ができました。

上記のアドバイスをお願いします。

答えて

16

Facebookからページデータを取得するにはアクセストークンが必要です。 まず自分のFacebookアプリケーションのパラメータを持つURLの下に使用してアクセストークンを取得:

https://graph.facebook.com/oauth/access_token?type=client_cred&client_id={yourappid}&client_secret={yourappscret}

次にあなたがトークン

一般戻ってFacebookのグラフAPIを呼び出すことができます。https://graph.facebook.com/wikipedia?access_token={token}

投稿:https://graph.facebook.com/wikipedia/posts?access_token={token}

サンプルコードは次のとおりです。

class Program 
{ 
    static void Main(string[] args) 
    { 
     var client = new WebClient(); 

     string oauthUrl = string.Format("https://graph.facebook.com/oauth/access_token?type=client_cred&client_id={0}&client_secret={1}", "appid", "appsecret"); 

     string accessToken = client.DownloadString(oauthUrl).Split('=')[1]; 

     string pageInfo = client.DownloadString(string.Format("https://graph.facebook.com/wikipedia?access_token={0} ", accessToken)); 
     string pagePosts = client.DownloadString(string.Format("https://graph.facebook.com/wikipedia/posts?access_token={0} ", accessToken)); 
    } 
} 
+0

上記のことから、アクセストークンの取得方法がわかりました。 もう一度進んでみたいと思います。上記の手順は、ページの情報と投稿をプルするのに役立ちます。ソフトウェアから、私はユーザーがページ管理者として壁にある特定の投稿に返信/コメントして欲しいと思っています。これは私のアプリケーションが最終的に達成したいものです。 あなたの返信をよろしくお願いします。 – HishHash

4

研究した後、私はあなたにも、FacebookのグラフからデータをフェッチするためにFacebook呼ばNugetパッケージを使用することができ、このコード

class Posts 
{ 
    public string PostId { get; set; } 
    public string PostStory { get; set; } 
    public string PostMessage { get; set; } 
    public string PostPictureUri { get; set; } 
    public Image PostImage { get; set; } 
    public string UserId { get; set; } 
    public string UserName { get; set; } 

} 

    private List<Posts> getFBPosts() 
{ 
    //Facebook.FacebookClient myfacebook = new Facebook.FacebookClient(); 
    string AppId = "--------"; 
    string AppSecret = "----------"; 
    var client = new WebClient(); 

    string oauthUrl = string.Format("https://graph.facebook.com/oauth/access_token?type=client_cred&client_id={0}&client_secret={1}", AppId, AppSecret); 

    string accessToken = client.DownloadString(oauthUrl).Split('=')[1]; 

    FacebookClient myfbclient = new FacebookClient(accessToken); 
    string versio= myfbclient.Version; 
    var parameters = new Dictionary<string, object>(); 
    parameters["fields"] = "id,message,picture"; 
    string myPage="fanPage"; // put your page name 
    dynamic result = myfbclient.Get(myPage +"/posts", parameters); 

    List<Posts> postsList = new List<Posts>(); 
    int mycount=result.data.Count; 

    for (int i = 0; i < result.data.Count; i++) 
    { 
     Posts posts = new Posts(); 

     posts.PostId = result.data[i].id; 
     posts.PostPictureUri = result.data[i].picture; 
     posts.PostMessage= result.data[i].message; 

     var request = WebRequest.Create(posts.PostPictureUri); 
     using (var response = request.GetResponse()) 
     using (var stream = response.GetResponseStream()) 
     { 
         posts.PostImage = Bitmap.FromStream(stream); 
     } 
      postsList.Add(posts); 
    } 
    return postsList; 

} 
+0

貼り付けるのではなく、もう少し説明できますか? – byxor

+0

このコードは、Facebookファンページの投稿{id、messeage、各投稿の画像}を取り出し、リストに保存します。 FacebookグラフAPI v.2.7を使用しています。多くの他のコードがあるかもしれませんが、それらの多くは時代遅れです。これは2016年9月13日まで機能しています。 アプリID、App Secret、およびFacebookのファンページ名を入力するだけで、データを取得できます。 –

2

を開発しました。また、Json.NETは、データを直接オブジェクトにマッピングするのに役立ちます。

public class FacebookPageInfo 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
} 

public class FacebookPost 
{ 
    public string Message { get; set; } 
    // ReSharper disable once InconsistentNaming 
    public string Created_Time { get; set; } 
    public string Id { get; set; } 
} 

public class FacebookPagingInfo 
{ 
    public string Previous { get; set; } 
    public string Next { get; set; } 
} 

public class FacebookPostData 
{ 
    public List<FacebookPost> Data { get; set; } 
    public FacebookPagingInfo Paging { get; set; } 
} 

public class Friend 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
} 

// get access token 
string oauthUrl = $"https://graph.facebook.com/oauth/access_token?type=client_cred&client_id={appId}&client_secret={appSecret}"; 
string accessToken = client.DownloadString(oauthUrl).Split('=')[1]; 

// get data and deserialize it 
var fbClient = new FacebookClient(accessToken); 
var fbData = fbClient.Get("/wikipedia/").ToString(); 
var info = JsonConvert.DeserializeObject<FacebookPageInfo>(fbData); 
fbData = fbClient.Get("/wikipedia/posts").ToString(); 
var posts = JsonConvert.DeserializeObject<FacebookPostData>(fbData); 
関連する問題