- 實驗情境一
使用者尚未登入Facebook便直接連結到App的Canvas Page, 而Canvas Page的程式中並沒有安置要求使用者進行登入的FBML
於瀏覽器網址列輸入Canvas Page URL http://apps.facebook.com/hello_world_sixyeah
你會發現可以直接看見部分內容, 至於有需要登入後才能取得的Social Content就會被替換或隱藏
接著我們在Canvas Page程式碼的最後方執行
PHP :
<?php
printf('<pre>%s</pre>',var_export($_REQUEST,true));
?>
我們會見到如下的資訊
array ( '/fb/hello_world_sixyeah' => '', 'fb_sig_in_canvas' => '1', 'fb_sig_request_method' => 'GET', 'fb_sig_locale' => 'en_US', 'fb_sig_in_new_facebook' => '1', 'fb_sig_time' => '1256133619.565', 'fb_sig_logged_out_facebook' => '1', 'fb_sig_added' => '0', 'fb_sig_api_key' => {API Key}, 'fb_sig_app_id' => '{APP ID}', 'fb_sig' => '9f15e9f06f6821ff86184a129910c9b9', )
接下來於原畫面執行登入的對話框中輸入帳號與密碼, 完成登入後頁面會重導回原Canvas Page
array ( '/fb/hello_world_sixyeah' => '', 'fb_sig_in_canvas' => '1', 'fb_sig_request_method' => 'GET', 'fb_sig_friends' => '{朋友的UID串}', 'fb_sig_locale' => 'en_US', 'fb_sig_in_new_facebook' => '1', 'fb_sig_time' => '1256133788.3434', 'fb_sig_added' => '0', 'fb_sig_canvas_user' => '{目前瀏覽Canvas Page朋友的UID}', 'fb_sig_api_key' => '{開發者的API Key}', 'fb_sig_app_id' => '{開發者應用程式的APP ID}', 'fb_sig' => '956aeff3bf63348a469e495dfb878274', )<fb:if-is-app-user>
接著進入Settings > Application Settings
該應用程式已經出現在你的應用程式清單中了, 接著點選Edit Settings
於Profile Tab中, Privacy選項被設定成Only Friends
接著將Tab切換到Additional Permissions, 你可以看到Publish recent activity (one line stories) to my wall的checkbox是沒有被勾選的
到目前為止,使用者還沒有完成對你的應用程式進行授權(Allow)這項動作
接下來請在你的Canvas Page URL的程式中加入以下要求使用者進行登入的程式碼
<fb:else>
<fb:redirect url="http://www.facebook.com/login.php?v=1.0&api_key={API Key}&next=http://apps.facebook.com/hello_world_sixyeah&canvas="/>
</fb:else>
</fb:if-is-app-user>
當你重新進行Canvas Page的Reload時, 畫面會變成如下圖所示
使用者可以選擇是否"Allow"你的應用程式去存取更多關於使用者的資料並進行更深入的互動
一但使用者點選了"Allow"之後, 頁面會進行Reload並取得更多與使用者相關的資訊,如下圖所示
接著點選右上方導覽列的Settings > Application Settings
此時可以看到, Profile Tab中的Privacy設定變更成了Everyone
接著將Tab切換到Additional Permissions, 你可以看到Publish recent activity (one line stories) to my wall的checkbox已經透過"Allow"這個動作被勾選起來了
-
實驗情境二
使用者尚未登入Facebook便直接連結到App的Canvas Page, 而Canvas Page的程式中安置了要求使用者進行登入的FBML
<fb:if-is-app-user>
<fb:else>
<fb:redirect url="http://www.facebook.com/login.php?v=1.0&api_key={API Key}&next=http://apps.facebook.com/hello_world_sixyeah&canvas="/>
</fb:else>
</fb:if-is-app-user>
當使用者直接連結到應用程式的Canvas Page URL時, Facebook會將頁面導向至如上圖所示的登入頁面要求使用者進行登入的動作, 當使用者輸入帳號與密碼進行登入之後, 使用者會直接被重導向到應用程式的Canvas Page, 而Facebook會自動的認定使用者已經"Allow"你所開發的應用程式.
也就是說, 當使用者點選Settings > Application Settings進入應用程式設定列表並點選該應用程式的Edit Settings之後可以看到, 彈跳式視窗中, Profile頁籤中的Privacy被設定成Everyone, 同時Additional Permissionsu頁籤中的Publish recent activity (one line stories) to my wall的checkbox也被Facebook自動checked起來了.
- 實驗情境三
使用者尚未登入Facebook, 並直接於瀏覽器中輸入App的Canvas Page URL. 此時使用者可以看見部分的App內容, 除了Facebook的Social Content之外. 使用者點選了左上角Facebook的Logo回到了首頁(未登入狀態下), 並於登入的對話框中輸入帳號與密碼進行登入, 在這種情況下, 剛剛使用者所瀏覽過的Facebook App將不會出現在Facebook的Appliction List之中, 必須重新再連結到該App的Canvas Page URL一次, App才會出現在應用程式清單中.
經過以上的觀察可以發現, 不論使用者是否透過"Allow"對Facebook App進行授權, 只要使用者連結到該App的Canvas Page URL, Facebook就會將該App加入使用者的應用程式清單之中, 而App的開發者可以於之後再向使用者申請對應用程式的授權(Allow), 其間的差別就只在於取得的使用者資訊多寡與被允許的互動程度.
Wednesday, October 21, 2009
Facebook API - Facebook的應用程式授權機制(一)
Facebook在應用程式的授權上, 講單純一點, 最主要的分別就是使用者是否曾經"Allow"過它, "Allow"這項動作決定了應用程式往後能跟使用者進行互動的程度, 以下就分各個不同的情境來觀察這事關重大的機制
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment