分類彙整:PHP

Flickr API 教學

最近剛好有用到Flickr API

來做個紀錄以免自己以後忘了

首先你必須有一組Flicker帳號…廢話…

然後在這裡 http://www.flickr.com/services/apps/create/apply/ 申請一個API Key

接下來就可以開始呼叫API了

所有API的用法可以參考 http://www.flickr.com/services/api/

下面讓我來舉個例子

 

首先在寫程式之前可以先做個小測試確定你的KEY跟API是活著的

直接在網頁輸入以下網址測試 http://www.flickr.com/services/rest/?method=flickr.photosets.getInfo&format=php_serial&photoset_id=相片集的編號&api_key=我的APIKEY

送出之後網頁就會把API呼叫的值回傳如下

a:2:{s:8:"photoset";a:16:{s:2:"id";s:17:"72157602138543609";s:5:"owner";s:12:"35663569@N00";s:7:"primary";s:10:"1430638617";s:6:"secret";s:10:"84ec9d1936";s:6:"server";s:4:"1063";s:4:"farm";d:2;s:6:"photos";i:135;s:11:"count_views";s:3:"542";s:14:"count_comments";s:1:"0";s:12:"count_photos";s:3:"135";s:12:"count_videos";i:0;s:5:"title";a:1:{s:8:"_content";s:22:"PARKⅡ‧映相巴黎";}s:11:"description";a:1:{s:8:"_content";s:0:"";}s:11:"can_comment";i:0;s:11:"date_create";s:10:"1190610982";s:11:"date_update";s:10:"1316530838";}s:4:"stat";s:2:"ok";}

這是JSON的結構

基本上回你很長一串就是你語法沒填錯了,或是你也可以檢查最後面的stat=’OK’

像我用PHP的話可以用 unserialize() 來把JSON解開成陣列

這樣就可以方便的抓到傳回的元素了

 

設定上相片集設成公開就可以抓到了

另外別忘了Flicker的條款規定頁面上要放回到Flickr的連結

以下的程式是用來抓Flickr相片集的封面

可以簡單的參考一下

$link 是相片集的連結

 

function getflckrset($link)
{
    global $FLICKRKEY;
    $setid = substr($link,strpos($link,’sets/’)+5);
    $setid = str_replace(‘/’,",$setid);
    
    //get photo
    $params = array(
        ‘api_key’    => $FLICKRKEY,
        ‘method’    => ‘flickr.photosets.getPhotos’,
        ‘photoset_id’    => $setid ,
        ‘format’    => ‘php_serial’
    );
    
    $encoded_params = array();
    foreach ($params as $k => $v)
        $encoded_params[] = urlencode($k).’=’.urlencode($v);
    $url = “http://api.flickr.com/services/rest/?".implode(‘&’, $encoded_params);
    $rsp = file_get_contents($url);
    $rsp_obj = unserialize($rsp);        //parser JSON formate
    
    $imgname = $rsp_obj[‘photoset’][‘photo’][0][‘id’].’_’.$rsp_obj[‘photoset’][‘photo’][0][‘secret’].’.jpg’;
    
    //get server
    $params = array(
        ‘api_key’    => $FLICKRKEY,
        ‘method’    => ‘flickr.photosets.getInfo’,
        ‘photoset_id’    => $setid ,
        ‘format’    => ‘php_serial’
    );
    
    $encoded_params = array();
    foreach ($params as $k => $v)
        $encoded_params[] = urlencode($k).’=’.urlencode($v);
    $url = “http://api.flickr.com/services/rest/?".implode(‘&’, $encoded_params);
    $rsp = file_get_contents($url);
    $rsp_obj = unserialize($rsp);
    
    $farm = $rsp_obj[‘photoset’][‘farm’];
    $server = $rsp_obj[‘photoset’][‘server’];
    
    $imgurl = ‘http://farm’.$farm.’.staticflickr.com/’.$server.’/’.$imgname;
    return $imgurl;
}

使用ZEND 呼叫GOOGLA API 取得GMAIL連絡人資料

GOOGLE上就有提供各種程式語言的範例

googleapicode  

直接抓回來用就可以了

 

因為幸運的找到有前輩寫的PHP範例

所以也省的研究了

直接試試看囉

請參考 http://i.laoer.com/grab-google-contacts-by-google-api.html

 

頁面上會有一個連結

Click here to authorize this application.

點下去以後會到GOOGLE頁面取得授權

apiauth.jpg  

 

授予權限之後就會把連絡人丟回來了

ex:

Email: turtlemt@gmail.com
Email: xxxxxxx@gmail.com…….

就醬子…

基本上都是人家寫好的東西

沒什麼很困難的地方

 

網站使用GOOGLE API的前置作業

網站使用GOOGLE API的前置作業

googleapi   

先去註冊帳號

http://code.google.com/intl/zh-TW/apis/accounts/

首先你必須有個google的帳號(不註冊又要用人家東西不是很超過嗎)

再來到domain管理的地方新增你要使用的web目標

也就是你的網域

https://www.google.com/accounts/ManageDomains

接下來要去做認證網域的所有權

也就是說你要想GOOGLE證明你是該網域的擁有者

一般的作法是從GOOGLE下載一個驗證檔擺到你的網站上

再按下驗證的按鈕

 

驗證完以後

會要你輸入一個網址

是取得權限token以後要回去的網址

填好以後就可以測試一下了

比方說這是我要取得token的連結

https://www.google.com/accounts/AuthSubRequest?next=http%3A%2F%2Fwww.example.com.tw%2Fauthsub%2Fprefix&scope=http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2F&session=1&secure=0&hd=default

 

其中參數的定義

取得權限的網址 https://www.google.com/accounts/AuthSubRequest?

取得以後要導到哪裡(也就是你方在GOOGLE設定的路徑) next=http%3A%2F%2Fwww.example.com.tw%2Fauthsub%2Fprefix

你要向GOOGLE取得什麼服務 scope=http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2F

其他參數我沒什研究

可以到這邊自行查找一下 http://code.google.com/intl/zh-CN/apis/accounts/docs/AuthSub.html#AuthSubRequest

 

設好之後丟出去就可以取得token如下

http://www.example.com.tw/authsub/prefix?token=1%2Fpm7GRAool9xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

等等在繼續研究實作上的應用