顯示具有 facebook 標籤的文章。 顯示所有文章
顯示具有 facebook 標籤的文章。 顯示所有文章

2011年10月10日 星期一

Facebook 非讚不可 php 語法

image

試了一下網路上「非讚不可」的 fbml 語法,是利用

 
<fb:visible-to-connection>

來達成的,但卻可以從原始碼中看到隱藏的內容。

 

看了一下 facebook-php-sdk,其實也可以用這樣的方式達成

 
require_once "lib/facebook.php";
 
$app_id = "";
$app_secret = "";
 
$facebook = new Facebook(array(
    'appId' => $app_id,
    'secret' => $app_secret,
    'cookie' => true
));
 
$user = $facebook->getUser();
$signed_request = $facebook->getSignedRequest();
 
$is_fan = false;
 
if ($signed_request) {
    if($signed_request['page']['liked']) {
        $is_fan = true;
    }
}
 
if ($is_fan) {
    include('fan.php');
} else {
    include('guest.php');
}

 

 

在這邊看到一樣的方法,他寫的比較詳細!

http://nocturnsoft.com/devblog/?p=526

2011年9月7日 星期三

Facebook API 循序圖

image
(圖的來源在 http://developers.facebook.com/docs/authentication/)

圖裡指的 APP 為 Facebook 中的 APP,通常以 WebSite 方式存在,以下皆以 WebSite 稱之。

步驟解說如下:

  1. 使用者來到 WebSite
  2. WebSite 提供一個連結至 Facebook 的「請求授權」頁面,連結的參數裡,帶有 WebSite 指定成功後跳轉的網址(通常指回自己身上),「請求授權」頁面會自動偵測使用者登入狀況來決定是否跳轉登入頁面。
  3. 「請求授權」成功後,Facebook 會通知 Browser 跳轉到步驟 2 指定的網址,並帶有 "code" 的參數。(這邊的 "code" 指的是「請求授權」成功的密鑰)
  4. WebSite 收到 "code" 之後,透過 "code" 連接到 Facebook 表示使用者已同意 WebSite 取得「access token」
  5. 取得「access token」之後,WebSite 便可透過「access token」直接對 Facebook 下達任何使用者授權的存取動作。

能請求的授權如下:
(來源在 http://developers.facebook.com/docs/reference/api/permissions/)

image
image
image
image

2011年9月6日 星期二

Ruby on Rails and Facebook API (koala)

 

我很訝異我無法在第一時間就 google 到 RoR 整合 Facebook API 的 solution。雖然不到千辛萬苦,但也是兜了一圈才找到這個 koala 套件。

https://github.com/arsduo/koala/wiki

 

如果要直接下載專案範例,那麼可以試試看

https://github.com/omeryavuz/yemek_koala

 

不知道是不是使用 VirtualBox 的關係,get_access_token 這個指令每次都回應我 auth_code 與 App id 不 match…但如果第二次訪問就可以正常取得 access_token,目前暫時用這個方式來解,還是得找時間實測看看實體機器。

2011年9月3日 星期六

Desktop Application Get Facebook access_token via Browser (on windows)

 

前言

如果應用程式是以 Web 為 base,那麼要能取得 Facebook 的 access_token 是比較容易的。這篇主要是讓非 Web Application 的開發者取得 access_token 的紀錄。

 

這篇適合稍微碰過 Facebook API 的人,若你對 Facebook API 並不熟,那麼閱讀這篇之前,你可以先試著閱讀...

 

 

facebook 官方也提到他們的 OAuth 2.0 認證機制並不直接支援一般的應用程式。

https://developers.facebook.com/docs/authentication/

image

 

可參考底下網站,有更詳細的解說
http://blog.ericsk.org/archives/1422

 

雖不直接支援,但 https://developers.facebook.com/docs/authentication/ 仍有提供解法,但前提是你的應用程式必須能呼叫 Browser。

在 Windows 上,只要透過 win32 api,其實要辦到這件事情並不困難,以下用 Ruby 做為範例語言:

程式碼

GetAccess_Token.rb

require 'win32ole'
 
# Enter Your app_id & app_secret
app_id = ''
app_secret = ''
 
ie = WIN32OLE.new('InternetExplorer.Application')
 
ie.Visible = true
ie.Navigate('http://www.facebook.com/dialog/oauth?
                client_id=' + app_id + '&
                redirect_uri=http://www.facebook.com/connect/login_success.html&
                scope=publish_stream,read_stream,read_friendlists,user_likes,friends_likes,offline_access')
 
sleep(2) until ie.ReadyState == 4
loop do
    break if ie.document.body.innertext.strip() == "Success"
end
 
code = ie.LocationURL.sub('http://www.facebook.com/connect/login_success.html?code=', '')
 
ie.Navigate('https://graph.facebook.com/oauth/access_token?
            client_id=' + app_id + '&
            client_secret=' + app_secret + '&
            redirect_uri=http://www.facebook.com/connect/login_success.html&
            code=' + code)
 
sleep(2) until ie.ReadyState == 4
 
dummy, access_token = ie.document.body.innertext.strip().split('=')
puts 'access_token : '
puts access_token
ie.Quit

 

其實只是利用 win32 api 開啟瀏覽器連結到 Facebook 提供的網址,而使用者照著操作之後,再利用 win32 api 取得瀏覽器中的資料而已。

操作畫面像這樣,

 

執行程式

image

 

跳出瀏覽器要求使用者登入

image

 

授權請求

image

 

接著你的程式就得到 access_token 啦!(在這邊我只是印出來而已)

image

2011年4月21日 星期四

透過 Facebook API,讓你的 Facebook Application 發佈動態消息

目的

是讓發佈動態消息可程式化,可依自己撰寫的應用邏輯,來決定何時發佈消息。

 

建議可以先閱讀

 

假設已經準備好了...

  1. 已經在 http://www.facebook.com/developers/ 建立了新的應用程式。 (在這例子上,我的應用程式叫 bmfriend_testapp)
  2. 準備了可執行 php 的 Web Server 環境。(在這例子上,我的 Web Server Domain Name 是 bmcool.no-ip.org)

 

 

開始進行

取得 fb_ca_chain_bundle.crt 以及 facebook.php

下載 facebook-php-sdk
image

 

下載最新版本(我抓到的是 facebook-php-sdk-v2.1.2-6-g04168d5.zip)
image

 

解壓縮至此
image
 

 

在src資料夾找到 fb_ca_chain_bundle.crt 以及 facebook.php
image

 

下載 demo 檔案與建置

下載 index.php ,在 Web Server 上建個資料夾(在這例子上,我的資料夾名稱是 facebook),將 fb_ca_chain_bundle.crtfacebook.php 以及 index.php 置入此資料夾
image

 

在 Facebook 上,編輯 Facebook Application 的設定

打開 Facebook Application Setting 頁面(我的 Application ID 是 204672162899646)

http://www.facebook.com/developers/apps.php?app_id=204672162899646

按下編輯設定(正常情況下,請保護好應用程式密鑰,不要讓自己以外的人知道)
image

 

點擊 Web Site
image

 

記下黃色螢光標示的部分,一個是你的 Application ID,一個是 Application Secret(正常情況下,請保護好應用程式密鑰,不要讓自己以外的人知道);而 Site URL 填入放置 fb_ca_chain_bundle.crtfacebook.php 以及 index.php 的位址並按下儲存
image

 

編輯 index.php 檔案,讓它與 Facebook Application 連結起來

打開 index.php,將底下紅框部分,改為應用程式的 Application ID 與 Application Secret
image

 

將底下紅框部分,改為應用程式的 Application ID 以及 Site URL
image 
image

 

開始使用建置好的 Facebook Application

來到 http://bmcool.no-ip.org/facebook/ 按下其中一個按鈕(我選了上面的)
image

 

登入
SNAGHTML3918ab4

 

按下同意
SNAGHTML3925294

 

跳轉回 http://bmcool.no-ip.org/facebook/ 此時已是登入狀態,此時輸入想發送的訊息以及按下送出
image

 

回到登入帳號的 facebook 主頁,便會發現發送成功!下方會標示是由申請的 Application 所發送的
image

 

 

還可以試試

  1. 將所有發送的訊息,依日期集中在同一個主題之下。(comments)
  2. 將訊息廣播給所有的朋友。(read_stream)
  3. 每天定時發送訊息給所有登入過 Facebook Application 的網友。

 

參考連結

2011年4月18日 星期一

Facebook API概念

Facebook API的概念大致描述如下:

  1. 只有在Facebook上建立(註冊)過的Facebook Application可以使用Facebook API。
  2. 所謂Facebook Application,指的是「外部Web Server上的CGI程式」加上「Facebook Application ID與Application Secret」的資訊。
  3. 在Facebook上建立(註冊)Facebook Application,便可獲得一組「Facebook Application ID與Application Secret」。

以上