Facebook在去年中開放了Vanity URL,讓使用者或粉絲頁面在一些條件下,可以更改網址成為使用者自己的名稱,或具代表性有意義的字串。

在開放的那時候,就應該知道這會像域名(domain name)一樣,有先搶先贏,以及同名衝突的問題。

果然,這事鬧大了。

TechCrunch 昨天23號刊出了這麼一篇新聞,標題很聳動:”Facebook偷走了使用者的個性化網址,並且賣給了公司"。

起因來自一位名叫Harman Bajwa的Facebook用戶,他的個人網址是Facebook.com/Harman。但,突然間這個網址被Facebook以違反政策的理由不能繼續使用。而這個動作,根據另一封Harman International寄給Harman Bajwa的email內容(就是要購買該網址)來看,顯然是為了將該網址售給Harman International 這間公司來鋪路。

Harman當然不爽,經投書給TechCrunch,事情立刻鬧大,新聞揭露後,引來留言261則,並馬上登入了TechCrunch前一百大事件文章第二名(根據Topsy)、在twitter上幾小時內就retweet了快一千六百。在Digg上面,也引起了超過兩千的推文。在Facebook上竟然也被分享了超過四百五十次。

這簡直是Facebook的公關災難!

不過,幾個小時後,Mark ZuckerBurg顯然發現了這個問題,不但加入了Harman所建立的Support Harman群組頁面,還給Harman他的網址,也公開的道歉了!真是戲劇化又快速地發展。

這個事件中,我們看到了TechCrunch新聞媒體的威力、社群與消費者的力量以及Facebook的明快動作,三方都令人激賞!

本文同步發布於 www.inside.com.tw

最近上了蒙恬科技官網,看到了這個"純真體會,簡單創作",這活動起頭了一個關於eggotown的小故事,並附上了關於eggotown的十幅圖畫,希望讀者依此創作三百字的小品,首獎是台幣兩萬元,其他獎品則約十萬元,參賽人則都可獲得300元折價券。底下quote一段活動宣傳:

純真小鎮eggotown
總是有著蔚藍的天空與乾淨的空氣
這樣的小鎮到底會發生甚麼樣的故事呢?
純真體會 簡單創作
邀請你寫下屬於eggotown的故事
就幫你拿大奬……(有現金20000及蒙恬年度暢銷產品,Eggtown 限量純真手札等豐富大奬)

蒙恬為鼓勵小人物的創作,本次將邀請eggotown與消費者一起創作「純真手札」,由eggotown插畫10幅,並由消費者參與網路活動填入設計對白,爭取「純真手札」的發行機會,讓每位參與者都有機會讓實現創作夢想。

由於網頁上註明活動平台是facebook,基於觀察social media marketing的立場,忍不住試著評估一下這個活動的做法與成效。疏漏之處,尚祈各界先進指教。

首先看一下,整個活動在時程上的安排是這樣的,11/5~12/31投稿,得獎作品的公布在1/15。本文寫作時間是1/12,所以活動已經進入收尾公佈結果階段。

細看活動規則,發現要投稿的人必須上facebook新增eggotown為好友,才能接收到活動相關通知。這個做法有點奇怪,為什麼不用eggotown粉絲頁面來進行呢?上eggotown頁面看,朋友有895人,去除一些親友帳戶,估計參與活動的人介於三百到六百人之間。

接著,我在Google上輸入"純真體會,簡單創作 蒙恬”來搜尋看看大家對這個活動的理解怎麼樣 -搜尋結果顯示了近八千個結果,深入進去看,則可發現大概只有前三頁是相關的,而最主要的活動曝光管道似乎是好康資訊網站,如Digwow,與一些活動公布網站,如Nextmin,不能確定是否真的reach到了最適當的參加創作的潛在族群。

蒙恬是作手寫筆起家的知名公司,這個活動與設計師Larry的eggotown合作,延伸既有的書寫概念到創作層次,傳達出希望能讓每個人都能很輕鬆的使用電腦溝通心裡的任何想法這樣的概念!這個品牌企業與當代藝術結合的做法很棒,也展現企業的企圖心。

不過,回到活動本身來看,操作時雖然以facebook為中心,但facebook僅只扮演了"註冊活動"這樣的功能性角色。活動設計中沒有善用相關的擴散機制,因而這樣的創作訊息在網路上傳播的也不夠遠,更沒有成為話題,有些可惜。以下提出三點可能的改變做法方式,提供大家思考:

1. 比賽昨品應即時發布,評選可納入網友意見:

我們再看一次,官網上關於活動步驟的說明如下圖:

其中,第五步驟-"靜候佳音",太可惜了,也太傳統了。

創作最好的出路就是共諸於世,參與創作者應該也希望能看到閱覽者對他的作品的回饋,若能即時公布、網友投票與留言,配合評選結果包括網友意見(例如30%分數比重),這樣創作者就有更好的創作動機,可能去經營他的朋友投票,或為這個活動進行宣傳。這樣,這個活動與概念的擴散性自然大增。

2. 應經營粉絲頁

粉絲頁的定位就是做這種品牌、活動與概念等用途。用朋友關係來做,實務上也會有5000人上限的問題。

3. 加入eggotown小遊戲,更直覺地傳達活動概念

這個活動目前的呈現方式,大部分文字呈現,原本就不知道eggotown的人不容易在第一時間掌握蒙恬想傳遞的純真創作概念。若能善用flash,將十幅插圖做個簡單的連接,配合facebook connect的結合,流暢地在粉絲頁上的活動頁籤與參與活動者訴說創作概念,感動之餘,活動也將自然地擴散。

我們寫作群也介紹了許多好案例,可做為設計活動參考,附上延伸閱讀連結:

以上淺見分享,也歡迎大家也提供寶貴意見。

TechCrunch上面24日發表了明年的十大IPO候選人名單,如同大家都看好的Facebook高居榜單第一名,賺錢賺到翻的Zynga第二名,而第三名是專業的商業社群LinedIn。作者也認為Twitter由於商業模式還沒找到的關係,或許2011年才有IPO的機會。社群類網站相對的商業成熟度可見一斑。

作者Eric Schonfeld的論述,各位可以自行去參閱原文,我看了一下84個回應,裡頭看到了幾個讀者認為應該值得注意的網站,或與作者意見相左的網站,稍做整理,順序沒有重要性之分:

1. http://art.com

全世界最大的線上畫廊,產品是提供海報、相片、藝術複製品及限量印刷品給家居或辦公室裝飾用。從他們開放職缺的質與量看起來,是很有可能要IPO的。

2. http://www.bazaarvoice.com/

Bazzarvoice提供一套評論系統,讓品牌商在網站上得以蒐集、分析使用者的回饋,因而能確實回應客戶的需求,增加銷售。

3. http://www.reardencommerce.com/

一家提供先進電子商務平台的公司。

4. http://www.whitepages.com/

實名的查詢黃頁,可以找人,找公司,或者輸入電話查詢誰擁有該號碼。

5. http://www.zillow.com/

線上房地產公司。

6. http://www.reachlocal.com/

Reachlocal透過廣告和搜尋引擎行銷來幫助中小企業管理網路上的營運銷售戰略。不過,有消息指出,Reachlocal日前已經向美國證交會提交IPO申請了。應該會確確實實地成為2010年第一家IPO的公司。

7. http://www.kayak.com/

旅遊搜尋引擎。可以找到最適合的旅遊選擇。

8. http://www.blurb.com/

幫你製做你的書。

9. http://www.sugarcrm.com/crm/

一家做CRM cloud的公司。讀者拿他跟salesforce.com類比,認為極有想像空間。

10. http://www.couponsinc.com/corp/index.asp

折扣卷行銷與技術提供商

同步發布在http://www.inside.com.tw

照目前官方支援的情況來看,用php來寫facebook的應用應該是首選,但如果想用ruby on rails寫,也不是不行。這篇文章就拿ruby on rails來介紹fb ap的寫法,並整合正ㄏㄤ的Heroku hosting,如何在四個小時內,無成本的建立出你的facebook ap。

在本篇文章中,一般性的facebook ap注意事項請參考前一篇,本篇只針對ruby on rails特定的部分做介紹。一樣,拿已經寫過的"朋友點點名"為例,來介紹怎麼入手。

ask_friends

0.  首先,還是玩一下"朋友點點名"這個應用!瞭解一下他做了甚麼事情。

1.  介紹一下"朋友點點名"的流程:

首先確認是否授權"朋友點點名"存取你的facebook資料。

授權後,facebook會問你,想取得"自動發佈wall”的權限。

接下來,系統自動選一個你的朋友,顯示他的圖片,並且自動問你一個問題,你需要輸入你的答案。

回答後,你的回答就自動發佈到該朋友的wall上面了。

這裡牽涉到的部分比php寫的那支較多,底下開始快速的介紹:

3. 安裝facebooker plugin

開一個rails專案

rails testproject

在你的rails專案裡,安裝facebooker plugin

cd testproject 
script/plugin install git://github.com/mmangino/facebooker.git

4. 建立heroku帳號與環境

首先,先到 http://www.heroku.com 申請一個帳號

確定申請好了之後,在你的linux環境中,用root執行

gem install heroku  //這樣就可以使用heroku相關指令,遠端管理操作 
 
heroku create testproject //建立heroku上的一個ror執行專案,會問你Heroku credentials,輸入你剛建立的heroku帳號的email跟密碼,這樣就可以建立完成。本例子中, testproject是專案名稱。

上述步驟如果成功完成,畫面上會吐出一串字,類似:

        Created http://testproject.heroku.com/ | git@heroku.com:testproject.git

其中,http://testproject.heroku.com/就是你的網站網址!對於小程式來說,你連domain name都不用申請就可以把ap放到facebook上了。而git@heroku.com:testproject.git這行就是 heroku上幫你開的source code存放的地方了。

接下來,我們把剛剛產生的rails 專案都放上去吧!

前提是,你得會用git,而且有安裝了git。本篇就不描述相關安裝方法。

在testproject rails專案的目錄中

git init 
git add . 
git commit -m "the first time" 
git push git@heroku.com:testproject.git master

至此,你會看到類似這樣的訊息:

Counting objects: 62, done. 
Compressing objects: 100% (55/55), done. 
Writing objects: 100% (62/62), 79.37 KiB, done. 
Total 62 (delta 10), reused 0 (delta 0) 
 
-----> Heroku receiving push 
-----> Rails app detected 
Compiled slug size is 80K 
-----> Launching....... done 
http://testproject.heroku.com deployed to Heroku 
 
To git@heroku.com:testproject.git 
* [new branch]      master -> master

那麼,看一下http://testproject.heroku.com,就看到了最基本的ruby on rails  server已經跑起來了!你有了一個server可以用了!

當然,這樣的使用只能作為實驗等級,大規模運用還須對heroku有進一步的瞭解,並且需要$$。但是我們現在可以用這個免費的資源來做點有趣的事情吧。

5. 到facebook上面建立一個新程式,拿到api key等資料,修改config/facebooker.yml

當裝了facebooker plugin後,專案的config目錄會多一個facebooker.yml的檔案,修改其中 production:的段落

最重要的只有三行

api_key: 填入吧 
secret_key: 填入吧! 
canvas_page_name: /

這樣,準備工作差不多完成了,底下開始寫facebook相關的程式碼了!

6.  讓使用者授權testproject可以存取facebook上他的資料

在controller裡面加上這兩行

ensure_application_is_installed_by_facebook_user 
filter_parameter_logging :fb_sig_friends

7. 隨機挑選朋友

在controller裡面,寫這行。那麼@friends這個 array就是你所有朋友打亂排序的結果。

@friends= (facebook_session.user.friends.sort_by {rand})

8. 顯示朋友圖片

在view裡面,這樣寫:

<fb:profile-pic uid="<%=@friends[0].uid%>" size="normal" />

9. 要求同意自動publish到wall的權限

在view裡面,加上

<script> 
Facebook.showPermissionDialog('publish_stream'); 
</script>

至於跳出一個視窗說要 publish 感想到朋友的 wall上的寫法,請參閱php那篇

10. 重新上傳code到heroku去

專案根目錄下,執行

git add . 
git commit -m "the first time"
git push git@heroku.com:testproject.git master

看到server重新啟動之後,連到你的facebook app試試看囉! http://apps.facebook.com/ask_friend/

11. 遇到問題!

執行的時候難免遇到問題,想查 log的話,打

heroku logs --app testproject  //把testproject 換成你的heroku project名稱

以上,快樂的開始寫facebook ap吧~如果有問題,也歡迎留言討論,教學相長。

如果排版有問題

請看http://www.inside.com.tw/11/28/%e6%95%99%e5%ad%b81%e7%94%a8php%e9%96%8b%e7%99%bcfacebook-ap-%e5%82%bb%e5%ad%90%e9%83%bd%e6%9c%83%e5%af%ab%e7%9a%84%e7%ac%ac%e4%b8%80%e6%94%affacebook-ap

標題說是傻瓜入門的原因是,這是我在Facebook上的第一支app,前後只花了兩小時,後來就沒改了,做為簡單入門的教學頗為適合,因此拿出來分享一下。

 

the_1st_facebook_app

 

這是個讓你測驗你的英文程度是否有國小程度的小程式,是個生活學習類的有用ap。要進入狀況前,請先玩一下:測驗:國小畢業應該具備的單字基礎


1. 簡單解說一下這支程式的相關流程:

首先,要玩這支ap的fb user必須先授權給這支程式,也就是第一個畫面,同意之後才能開始玩。

 

1

 

接下來,程式自動從資料庫中找單字來出題,答題後告訴你剛剛答對還是答錯並且計算答題總數,這是一般的php。

 

2

每答對十題,程式跳出一個視窗,請你發佈一些訊息到你的Wall上面。

 

 

3

 

2. 要達成以上的需求,基本上非常簡單,首先你自己的php程式應該先寫好了,再做facebook的整合就很快了。

以下我用簡化的code假設你的主程式是這麼寫的,這只是個例子,真正的程式邏輯要靠自己來。在這個簡化的code裡面,使用者永遠需要選第三個選項,這樣就會答對,否則就會答錯,顯示答錯的訊息給你看。

logic的部分(controller):

if ($_POST['choice']) { 
    if ($_POST['choice'] == '3') { 
        $msg="答對了"; 
    } else { 
        $msg="答錯了"; 
    } 
}

presentation的部分(view)

<?php echo $msg; ?>

請開始作答

題目:water 

 <form method="post" action="test.php" name="test1" id="test1"> 
<div> 

<div><input type="radio" name="choice" value="1" onclick="document.getElementById('test1').submit();">努力工作的,勤勉的</div> 

<div><input type="radio" name="choice" value="2" onclick="document.getElementById('test1').submit();">…的,…所有的</div> 

<div><input type="radio" name="choice" value="3" onclick="document.getElementById('test1').submit();">水</div> 

<div><input type="radio" name="choice" value="4" onclick="document.getElementById('test1').submit();">粉筆</div> 

</div> 
</form>

3. 有了上述的核心程式,現在就有兩件事得做:

a .怎麼讓facebook user授權給你的這支程式哩?

b. 如何跳出提示訊息讓使用者發佈訊息到wall?

首先,到 http://www.facebook.com/developers註冊一個新的應用,這頁的右上角有個”Set Up New Application”接下來,就是設置這個新的ap的相關重要參數,最重要的是:

驗證裡面的 Post-Authorize Callback URL,當使用者授權ok後,fb就會把使用者導往這個網址,如果沒有特殊的設計,就填寫你的程式所在的網址,在我們的例子裡,假設我剛剛寫的那個php程式放在 http://stingtao.info/1/2/test.php,那麼這個欄位就寫http://stingtao.info/1/2/test.php

以及Canava裡面的 畫布頁面網址 與 Canvas Callback URL,第一個只要不跟別人的重複,隨便你寫,第二個如果你沒有特殊的需求,也是填寫你的程式所在的網址,例如: http://stingtao.info/1/2/test.php

其他設定請看真的例子:

4

5

 

存檔後,基本上facebook平台上的設定就好了,請注意抄下以下三個數值,後面會用到。

Application ID    
API 金鑰    
秘密  

 

4. 下載 php client library, 網址在 http://svn.facebook.com/svnroot/platform/clients/packages/facebook-platform.tar.gz

我們假設你解開的路徑就是相對於test.php所在目錄下的facebook子目錄中。

5. 接下來,就超簡單了,直接先寫出結果吧,照著抄一定會work的,所以我直接用註解描述相關事情:

在剛剛的主程式加入紅字的部分:

logic的部分(controller):

require_once('facebook/php/facebook.php'); 
$facebook = new Facebook('API 金鑰','Application Secret');  //把剛剛看到的數字取代相關金鑰以及秘密 
$appid = 'Application ID';  //字串裡面換成你的 app ID 
$fb_user = $facebook->require_login(); //就是這行,fb就會要使用者登入了 

if ($_POST['choice']) { 
    if ($_POST['choice'] == '3') { 
        $msg="答對了"; 
    } else { 
        $msg="答錯了"; 
    } 
}

presentation的部分(view)

<?php echo $msg ;?>

請開始作答

題目:water 

 <form method="post" action="test.php" name="test1" id="test1"> 
<div> 

<div><input type="radio" name="choice" value="1" onclick="document.getElementById('test1').submit();">努力工作的,勤勉的</div> 

<div><input type="radio" name="choice" value="2" onclick="document.getElementById('test1').submit();">…的,…所有的</div> 

<div><input type="radio" name="choice" value="3" onclick="document.getElementById('test1').submit();">水</div> 

<div><input type="radio" name="choice" value="4" onclick="document.getElementById('test1').submit();">粉筆</div> 

</div> 
</form> 

<?php if (!empty($msg) ) { //這段的意思就是只要答題,那麼就跳一個視窗出來問要不要publish 到 wall,這是facebook提供的javascript 函式,不用想太多,就用下去就會有效果 

?> 
<script> 
var actionLinks = [{ "text": "想瞭解facebook ap的開發?到inside.com.tw", "href": "http://www.inside.com.tw"}]; 
Facebook.streamPublish('<?php echo $msg;?>', 
'', 
 actionLinks, 
'', 
'剛剛答題的結果如下:', 
'', 
true 
);</script> 

<?php } ?>

6. ok, 打開瀏覽器指向你剛剛填的Canvas URL, 網址類似 http://apps.facebook.com/nciku_english這樣的東西,你就會看到熟悉的facebook應用程式使用流程了。