close

記得不久前我曾丟出 Plurk 對對碰小程式

目前我將該程式作了一些修改並上傳,新版本一樣具有舊版可以儲存好友名單的功能,並判斷好友是否刪除你

另會提示新增的好友及更改自己暱稱的好友

檔案下載: 按我
解壓密碼:upload by windstar

 

2013-12-04_095138

該程式一啟動即會進入 Plurk 的 API 授權,採用 oAuth 作認證的系統都會有類似的授權畫面

舉例而言像 Facebook 亦有,只是他們是網頁,所以透過所謂的 API Callback 將授權直接返還,所以你不會需要輸入如下圖的認證碼

2013-12-04_095224

因為本程式並無透過 Callback 作返還,所以需請使用者輸入認證碼,當輸入完畢後,未來程式都會透過該認證來存取 Plurk 服務

需注意的是使用 Plurk 的網頁會有 14 天的 Cookies 的生命週期,但透過 API 的 oAuth 作認證並不會有

這時你可能會想說這樣我的帳號不是更加不安全嗎?是永久耶,永久這好恐佈。

其實不會的,所有你想得到的安全性議題大概都有前人想過了,這個認證的 Token 是唯一的,所以如果從其它電腦重取 Token 的話,這邊取的就會失效,所以就又要重新認證才行。
另外在 這個 網頁亦可以撤銷你曾經授權過的程式,包括像「噗浪卡」「Easy plurk」等透過 API v2.0 撰寫而成的程式
(沒錯,噗浪肉骨獸並非透過 API v2.0 撰寫而成,所以在該頁面並無法註銷,但一代的 API 或直接 Call 網頁版在用的那些 API ,都是透過 Cookies 儲存,所以會有 14 天就需重新登入的問題)

2013-12-04_095235

當進入後你可以看到你自己的個人資訊,上面亦有朋友清單及共同好友清單的 tab 供你選擇

朋友清單可以載入你的所有的好友資料

2013-12-04_095541
2013-12-04_101057
2013-12-04_095619

可以看到如上面三張圖,當不是好友清單中的,而是新增到這個清單的,會是綠底藍字,而如果是已經在資料庫有資料的,則會是紫底黑字,如果是上次儲存到資料庫到現在的時間之間曾改過暱稱的則會是紫底藍字,而如果是刪除你好友,則會是 YellowGree 顏色為底,然後紅字,並會被列在最底下。

按左邊的加號可以載入好友的名字的變更狀態,像上圖二,可以看到他的前一個暱稱與現在暱稱是不同的,方便我記憶好友名稱的變化,免得改到最後我認不出來他是誰XD

而直接在好友清單上點右鍵,會出現右鍵選單,其中的刪除並非是刪除好友,而是把好友的資料從資料庫中移除,主要是用在如果好友刪除你,資料庫並不會自動移除,而是讓使用者自己決定是否移除該好友資料,如果不希望他出現在清單上,就點下刪除吧!

而如果選擇取得共同好友,則會跳到第三個頁籤,來取得好友名單的交集。

2013-12-04_101752
2013-12-04_101922  

如上圖,可以取得你的帳號及指定好友的帳號的好友清單,移到大頭圖上可以看到好友的一些基本資訊,而在大頭圖上按右鍵,則可以直接透過預設瀏覽器開啟該帳號的Plurk網頁。

2013-12-04_102056

共同好友清單會如上圖,移到大頭圖上一樣會顯示好友的基本資訊,另右鍵一樣有相同的右鍵選單,可以用預設瀏覽器開啟該好友的噗浪。

 


好了,基本介紹完了,來談談程式的技術面吧,分享一下我的心得吧

這個程式呼叫的 API 使用 oAuth 作認證,目前已經有太多 API 都是透過 oAuth 作認證,像是 Google、Facebook、twitter及目前的 Plurk

另外像show 好友清單則是使用 treedatagridview 來作樹狀好友的列表

而移到好友大頭圖本來我是透過一個 Panel 並指定其顯示作標,但很明顯的他實用度並不高,因為他並無法超出 Form 的邊界,雖然他可以放置像超連結等讓使用者去點擊,所以最後我改使用自訂的 ToolTip 來顯示好友的資訊。

而資料庫一直在猶豫要選用哪個,最後使用 Sqlite ,因為這個是最輕量化的,但該有的功能他一個也沒少!

他可以讓使用者動態產生資料庫,所以我發佈出去的專案並沒有資料庫檔案,而且雖然我沒有啟用,但 .Net 版的 System.Data.SQLite 可以為資料庫作加密,使得安全性增加

 

如果對這程式有興趣或有任何問題想討論都歡迎留言

另對這程式有任何建議亦可以留言回覆告知。

arrow
arrow
    文章標籤
    plurk api
    全站熱搜
    創作者介紹
    創作者 MyWCT 的頭像
    MyWCT

    天翼翔幻

    MyWCT 發表在 痞客邦 留言(0) 人氣()