[C#/Facebook API] 利用Facebook API 發文,適合前後端平台(使用者無需輸入帳密方式)

[C#/Facebook API] 利用Facebook API 發文,適合前後端平台(使用者無需輸入帳密方式)

前言

程式發文到自己的塗鴉牆

網路上找了許多方法

有Client端做法(Facebook Javascript SDK)、Server端做法(Facebook C# SDK的FacebookClient、第三方套件的FacebookService物件等等)

以下介紹自己試出來最方便的Server端做法,沒有Web的tag標籤沒有官方的Javascript語法,還解決了access token過期問題(How-To: Publishing With an App Token)

另,本文在撰寫時,並沒有所謂的API Key、Application Key,只有App ID和App Secret,所以請注意隨著SDK改版,文章有可能失效

借一下gipi網友文章:[C#]使用Facebook SDK開發Fackbook API

 

 

實作

1. 先到facebook developer註冊自己的開發者帳號

並新增應用程式資料

image

image

App Name隨便取沒關係,不過發文後,App Name會出現在畫面上

image

輸入完驗證碼後,按繼續

image

接著進到此頁,把App ID和App Secret記下來,待會程式碼會用到

image

接著要設定允許此應用程式的權限

image

確認是哪個應用程式要設定後,按「取得存取代碼」

image

因為要發文就好,所以選「publish_stream」

image

接著主要選紅色框的部份就行

image

選「同意」

image

回到「Graph API Explorer」,把自己的User Id記下來,待會程式碼會用到

※由於稍後程式碼要使用動態產生的access token,所以這裡要用User FB ID,而不是用me

※那個存取代碼(Access Token)不用理它,稍後程式碼要動態產生

image

 

OK,到這邊,facebook上的應用程式資料大都準備就緒

開始動手寫程式

 

 

2.在自己的Visual Studio專案裡

image

搜尋「facebook」關鍵字並把圖中的套件安裝到專案

image

以下是發文到自己的塗鴉牆,簡單版

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Dynamic;
using System.Linq;
using System.Net;
using System.Text;
using Facebook;

namespace ConsoleApplication1
{
    class Program
    {
        
        static void Main(string[] args)
        {
            string AppID = "";
            string AppSecret = "";
            string UserId = "";

            WebClient wc = new WebClient();
            //因為access_token會有過期失效問題,所以每次都重新取得access_token
            string result = wc.DownloadString("https://graph.facebook.com/oauth/access_token?client_id=" + AppID + "&client_secret=" + AppSecret + "&grant_type=client_credentials");
            string access_token = result.Split('=')[1];
            
            Facebook.FacebookClient client = new FacebookClient(access_token);
            client.Post(UserId+"/feed", new { message = "要發文的內容" });

             

            Console.ReadKey();
        }
    }
}

執行結果:

image

如果有超連結指向影音檔、圖片等等進階語法的話

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Dynamic;
using System.Linq;
using System.Net;
using System.Text;
using Facebook;

namespace ConsoleApplication1
{
    class Program
    {
        
        static void Main(string[] args)
        {
            string AppID = "";
            string AppSecret = "";
            string UserId = "";

            WebClient wc = new WebClient();
            //因為access_token會有過期失效問題,所以每次都重新取得access_token
            string result = wc.DownloadString("https://graph.facebook.com/oauth/access_token?client_id=" + AppID + "&client_secret=" + AppSecret + "&grant_type=client_credentials");
            string access_token = result.Split('=')[1];

            dynamic messagePost = new ExpandoObject();
            //縮圖Url
            messagePost.picture = "http://cdn.slashgear.com/wp-content/uploads/2012/08/microsoft_logo.jpeg";
            //超連結
            messagePost.link = "http://www.microsoft.com/";
            //超連結文字
            messagePost.name = "[name] Facebook name...";
            //超連結底下的小文字
            messagePost.caption = " Facebook caption";
            //圖片描述
            messagePost.description = "[description] Facebook description...";
            //發文內容
            messagePost.message = "[message] Facebook message...";


            FacebookClient appp = new FacebookClient(access_token);
            appp.Post(UserId + "/feed", messagePost);
            

             

            Console.ReadKey();
        }
    }
}

執行結果

image

 

以上

如果程式要發文到自己的粉絲團…目前還找不到完美解決方案,有空再來補完

 

相關文章:

6.4 Facebook API 主要講API分類

Facebook C# SDK how to post on wall

Windows Service Facebook C# SDK Architecture

[閱讀筆記]Facebook官網的Graph API

wall posts with the facebook graph api 給Web用

 

其他應用:

[Facebook][C#] 透過 Graph API 上傳照片至粉絲專頁(Page)並將之設為封面照片(Cover)

利用facebook的comments做網頁的留言功能

Facebook Graph API Post to friends wall

使用Facebook C# SDK 進行帳號驗證 (使用VB.Net)

 

以下是使用者要輸入帳密的方式:

Using Facebook SDK in Desktop Application C#.Net

Using Facebook SDK 3.01 with C#.NET

Creating a simple Facebook Application using WPF

 

2013.7.18追記

看來用此方法是無法直接發文到朋友牆上的:https://developers.facebook.com/docs/reference/api/publishing/