[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註冊自己的開發者帳號
並新增應用程式資料
App Name隨便取沒關係,不過發文後,App Name會出現在畫面上
輸入完驗證碼後,按繼續
接著進到此頁,把App ID和App Secret記下來,待會程式碼會用到
接著要設定允許此應用程式的權限
確認是哪個應用程式要設定後,按「取得存取代碼」
因為要發文就好,所以選「publish_stream」
接著主要選紅色框的部份就行
選「同意」
回到「Graph API Explorer」,把自己的User Id記下來,待會程式碼會用到
※由於稍後程式碼要使用動態產生的access token,所以這裡要用User FB ID,而不是用me
※那個存取代碼(Access Token)不用理它,稍後程式碼要動態產生
OK,到這邊,facebook上的應用程式資料大都準備就緒
開始動手寫程式
2.在自己的Visual Studio專案裡
搜尋「facebook」關鍵字並把圖中的套件安裝到專案
以下是發文到自己的塗鴉牆,簡單版
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();
}
}
}
執行結果:
如果有超連結指向影音檔、圖片等等進階語法的話
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();
}
}
}
執行結果
以上
如果程式要發文到自己的粉絲團…目前還找不到完美解決方案,有空再來補完
相關文章:
6.4 Facebook API 主要講API分類
Facebook C# SDK how to post on wall
Windows Service Facebook C# SDK Architecture
wall posts with the facebook graph api 給Web用
其他應用:
[Facebook][C#] 透過 Graph API 上傳照片至粉絲專頁(Page)並將之設為封面照片(Cover)
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/