聚會時間公告: 因應COSCUP 2011, Kalug 8月份休會一次

十一月 29, 2013

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» Youtube IFrame API Unable to post message Issue

Solid_color_You_Tube_logo

YouTube IFrame Player API 提供了簡單的介面及方法,讓網站可以快速整合 Youtube 影片,但是不得不說 Google 針對 Youtube API 時常改版,所以就會常常碰道友時候可以動,有時後不可以動。Youtube 在 2011 公告開始支援 https protocol,所以現在很多網站存取 Youtube API 時,都會使用底下寫法

<script>
      var tag = document.createElement('script');
      tag.src = "//www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
</script>


也就是你的網站只支援 http:// 時,就會去讀取 http://www.youtube.com/iframe_api,但是透過 YT.Player 物件來產生多個 Youtube 影音時,就會出現底下錯誤訊息,導致 Javascript API 無法控制 Youtube 影片

Unable to post message to http://www.youtube.com Recipient has origin: https://www.youtube.com/

這問題在 Stackoverflow 被提出來多次,我自己針對 Youtube API 產生下面的解法,只要按照底下方式操作,就不會產生任何錯誤訊息了

1. load iframe api https://www.youtube.com/player_api
2. load iframe src path: https://www.youtube.com/embed/0GN2kpBoFs4?rel=0

如果有使用 YT.Player 動態產生 Youtube 元件,請務必檢查 src 的 protocol

setTimeout(function(){
    var url = $('#iframe_youtube').prop('src');
    if (url.match('^http://') {
        $('#iframe_youtube').prop('src', url.replace(/^http:\/\//i, 'https://'));
    }
}, 500);

如果確定都是透過 https:// 來跟 Youtube 溝通,那就不會產生 postMessage 無法收到的問題,這解法我也有更新在 Google 論壇上,另外原發問者也有將我提供的解法,轉到 Stackoverflow 解答區,大致上是這樣。

十一月 3, 2012

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» 2012 PHPConf RESTful API Design & Implementation with CodeIgniter PHP Framework

phpconf

去年 PHPConf 介紹了 CodeIgniter PHP Framework,這次講如何在 CodeIgniter 底下設計 RESTFul API,其實主要介紹兩個 CodeIgniter 套件,第一個是 RESTFul Server 前面是 RESTFul Client,一個伺服器端,後面用來測試 (Unit Test),底下是今年的 Slide,歡迎大家下載

RESTful API Design & Implementation with CodeIgniter PHP Framework from Bo-Yi Wu

Related View

五月 1, 2012

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» CodeIgniter TextMagic API Library Release (簡訊功能)

CodeIgniter

之前寫了 Nexmo 簡訊 API Library for CodeIgniter Framework,現在又發現國外新的一家簡訊系統,叫做 TextMagic,看了一下簡訊價格,27 美金可以傳送 285 通簡訊,似乎比 Nexmo 還貴了一些,不過沒關係,TextMagic 還支援了後台系統或者是 Email 來傳送簡訊,這點倒是不錯,相較於 Nexmo,TextMagic 後台多了太多功能了,不多說了,直接來使用 CodeIgniter TextMagic Libray。

申請簡訊帳號跟密碼

先到 TextMagic 註冊新帳號,完成之後請到後台申請API密碼。這樣大致上完成。

從 getsparks 安裝

如果您有在使用 Getsparks 服務,透過此方式安裝是最快的,請參考 TextMagic-SMS-API getsparks website

// install from getSparks website
$ php tools/spark install -v1.0.1 TextMagic-SMS-API
// include TextMagic Library to controller
$this->load->spark('TextMagic-SMS-API/1.0.1');

如果不想透過 getsparks 安裝,可以直接到 Github CodeIgniter-TextMagic-API 下載 Source Code,將檔案放入到您的 application 目錄底下即可。

使用方式

用 API 之前,請先閱讀 官方 TextMagic API 文件,搭配 Github CodeIgniter-TextMagic-API Readme 文件 即可。

如果有任何問題都可以直接留言給我。

原始碼

CodeIgniter-TextMagic-API Github Source Code
Getsparks TextMagic-SMS-API

Related View

十一月 19, 2011

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» 新版 CodeIgniter Nexmo Message API Library Release

CodeIgniter

繼上次釋出第1版 CodeIgniter 透過 Nexmo 傳送簡訊 Mobile Messaging 之後,該版本只有支援簡訊傳送功能,如果大家想測試,可以上 Nexmo 官網申請帳號,就可以使用了,不過在官網 Documentation 裡面有新增了 Developer API 部份,這次改版就一次把全部加入到 Library 裡面。

  • Account: Get Balance
  • Account: Get Pricing
  • Account: Settings
  • Account: Numbers
  • Number: Search
  • Number: Buy
  • Number: Cancel

開發過程碰到 Account: Settings 部份沒辦法 Update,所以跟國外官方開發者溝通之後,官方終於把 API 修正了,目前都可以正常使用了,大家可以透過底下方式安裝:

Github

下載網址:https://github.com/appleboy/CodeIgniter-Nexmo-Message
請先閱讀 Readme 使用方式。

getsparks

下載網址:http://getsparks.org/packages/Nexmo-SMS-Message/versions/HEAD/show
一步安裝法:

php tools/spark install -v1.0.2 Nexmo-SMS-Message

Related View

十二月 30, 2009

小惡魔AppleBOY
AppleBOY
小惡魔 – 電腦技術 – 工作筆記 – AppleBOY is about »

tag cloud

» [PHP Framework] How to implement Plurk API in CodeIgniter

ci_logo2 (by appleboy46)
很開心在12月看到 Plurk Release API 出來,而自己也跟網路上一些朋友合作開發 PHP implementation of Plurk API,Plurk (簡稱噗浪)在台灣這一兩年紅了起來,網路高手分別針對噗浪研究產生非官方的 API,現在官網 Release 出來,提供了 JavaPython 的 Example,我想因為 Plurk 是用 Python 寫出來的,所以提供了範例,但是 API 出來沒多久,roga 就集合了網路一些強者,一起開發了 PHP Plurk API,我也拿了此 API 在實作到 CodeIgniter Framework,讓在使用此套 open source 的使用者可以享用 Plurk API。不過從2009.12.29日之後,Plurk 官網有限制每天只能 call 50.000 次,已經蠻多了,不要操掛 Plurk 的機器阿。

1. 首先下載 CodeIgniter 1.7.2 版本:下載
2. 新增檔案 plurk_config.php 和 plurk_constant.php 到 application/config/ 目錄底下
plurk_config.php 檔案內容如下:

<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$config['api_key'] = "xxxxx";
$config['username'] = "xxxxx";
$config['password'] = "xxxxx";

?>

api_key 請到 Plurk API 網站申請,申請過後會寄信到您的信箱,username 是 Plurk 帳號,password 是 Plurk 密碼。
plurk_constant.php
http://github.com/appleboy/CodeIgniter-Plurk-API/blob/master/config/plurk_constant.php

這檔案不需要修改什麼,唯一要注意的是,可以設定 Plurk 的 log 跟 Cookie 檔案位置,目前是存放到 application/logs/ 目錄,如果沒有此目錄,請麻煩建立此資料夾,之後設定 755 讓 Web 可以存取。

define('PLURK_COOKIE_PATH', APPPATH . 'logs/cookie');
define('PLURK_LOG_PATH', APPPATH . 'logs/plurk_log');

3. 新增 Common.php 跟 Plurk.php 檔案到 application/libraries/ 資料夾裡面
Common.php 檔案如下:
http://github.com/appleboy/CodeIgniter-Plurk-API/blob/master/libraries/Common.php
Plurk.php 主程式:
http://github.com/appleboy/CodeIgniter-Plurk-API/blob/master/libraries/Plurk.php

4. 接下來就可以新增 Controller 來測試看看,直接些改 CodeIgniter 所預設的 Welcome Controller

<?php
class Welcome extends Controller {
    function __construct()
    {
        parent::Controller();
        $this->config->load('plurk_config');
        $this->load->library('plurk');

    }
   
    function index()
    {
        $api_key = $this->config->item('api_key');
        $username = $this->config->item('username');
        $password = $this->config->item('password');
        $this->plurk->login($api_key, $username, $password);  
       
        /**
         ******************************************
         * @Get plurks
         *
         * set plurk id = {123, 456, 789}
         ******************************************/

       
        echo "<h1>----- get plurks -----</h1>";
        echo "<pre>";
        print_r($this->plurk->get_plurks());
        echo "</pre>";
       
        /*
        echo "<h1> ----- get someone's plurk ----- </h1>";
        print_r($plurk->get_plurk(123));
       
        echo "<h1> ----- get unread plurks ----- </h1>";
        print_r($plurk->get_unread_plurks());
       
        echo "<h1> ----- mark plurk as read ----- </h1>";
        $plurk->mark_plurk_as_read(array(123,456,789));
       
        echo "<h1> ----- add plurk ----- </h1>";
        $plurk->add_plurk('en', 'says', 'Hello World');
       
        echo "<h1> ----- edit plurk ----- </h1>";
        $plurk->edit_plurk(123, 'be edited');
       
        echo "<h1> ----- delete plurk ----- </h1>";
        $plurk->delete_plurk(123);
       
        echo "<h1> ----- mute plurks ----- </h1>";
        print_r($plurk->mute_plurks(123));
       
        echo "<h1> ----- unmute plurks ----- </h1>";
        print_r($plurk->unmute_plurks(123));
        */

       
        /**
         ******************************************
         * @Get alerts
         *
         ******************************************/

       
        /*
        echo "<h1> ----- get active alerts ----- </h1>";
        print_r($plurk->get_active());
       
        echo "<h1> ----- get a list of past 30 alerts ----- </h1>";
        print_r($plurk->get_history());
       
        echo "<h1> ----- remove notification ----- </h1>";
        $plurk->remove_notification(123);
        */

       
        /**
         ******************************************
         * @Get plurk's responses
         *
         ******************************************/

       
        /*
        echo "<h1> ----- get responses ----- </h1>";
        echo "set plurk id = 123</h1>";
        print_r($plurk->get_responses(123));
       
        echo "<h1> ----- add response ----- </h1>";
        echo "set plurk id = 123</h1>";
        print_r($plurk->add_response(123, 'test response', 'says'));
       
        echo "<h1> ----- delete response ----- </h1>";
        echo "set plurk id = 123, response id = 456</h1>";
        $plurk->delete_response(123, 456);
        */

       
        /**
         ******************************************
         * @Control user
         *
         ******************************************/

       
        /*
        echo "<h1> ----- get own profile ----- </h1>";
        print_r($plurk->get_own_profile());
       
        echo "<h1> ----- get user public profile ----- </h1>";
        echo "set user id = 123</h1>";
        print_r($plurk->get_public_profile(123));
       
        echo "<h1> ----- get user info ----- </h1>";
        print_r($plurk->get_user_info());
       
        echo "<h1> ------ get users friends (nick name and full name)</h1>";
        print_r($plurk->get_completion());
       
        echo "<h1> ----- get block user's list ----- </h1>";
        print_r($plurk->get_blocks());
       
        echo "<h1> ----- block user ----- </h1>";
        $plurk->block_user(5366984);
       
        echo "<h1> ----- unblock user ----- </h1>";
        $plurk->unblock_user(5366984);
        */

       
        /**
         ******************************************
         * @Control friends
         *
         * set user id = 123
         * set friend id = 789
         ******************************************/

       
        /*
        echo "<h1> ----- get someone's friends ----- </h1>";
        print_r($plurk->get_friends(123));
       
        echo "<h1> ----- become someone's friend ----- </h1>";
        $plurk->become_friend(789);
       
        echo "<h1> ----- remove friend ----- </h1>";
        $plurk->remove_friend(789);
       
        echo "<h1> ----- accept friendship request as friend ----- </h1>";
        $plurk->add_as_friend(789);
       
        echo "<h1> ----- accept all friendship requests as friends ----- </h1>";
        $plurk->add_all_as_friends();
       
        echo "<h1> ----- deny friendship ----- </h1>";
        $plurk->deny_friendship(789);
        */

       
        /*
         ******************************************
         * @Control fans
         *
         * set user id = 123
         * set fan id = 789
         ******************************************/

         
        /*
        echo "<h1> ----- get following ----- </h1>";
        print_r($plurk->get_following());
       
        echo "<h1> ----- get someone's fans ----- </h1>";
        print_r($plurk->get_fans(123));
       
        echo "<h1> ----- become someone's fan ----- </h1>";
        $plurk->become_fan(5366983);
       
        echo "<h1> ----- accept a friendship request as fan ----- </h1>";
        plurk->add_as_fan(789);
       
        echo "<h1> ----- accept all friendship requests as fans ----- </h1>";
        $plurk->add_all_as_fan();
        */

       
        /* can't use */
        //echo "<h1> ----- set user following ----- </h1>";
        //echo "user id = 789</h1>";
        //echo ($plurk->set_following(3440147, $follow = FALSE)) ? 'success' : 'disable';
       
       
        /*
         ******************************************
         * @Search
         *
         ******************************************/

       
        /*
        echo "<h1> ----- search plurk ----- </h1>";
        print_r($plurk->search_plurk('php-plurk-api'));
       
        echo "<h1> ----- search user ----- </h1>";
        print_r($plurk->search_user('roga lin'));
       
        echo "<h1> ----- get emoticons ----- </h1>";
        print_r($plurk->get_emoticons());
        */

       
       
        /*
         ******************************************
         * @Clique
         *
         ******************************************/

       
        /*
        echo "<h1> ----- get clique list ----- </h1>";
        print_r($plurk->get_cliques());
       
        echo "<h1> ----- create a clique ----- </h1>";
        print_r($plurk->create_clique("test"));
       
        echo "<h1> ----- rename clique ----- </h1>";
        print_r($plurk->rename_clique("test","test1"));
       
        echo "<h1> ----- get clique ----- </h1>";
        print_r($plurk->get_clique('test1'));
       
        echo "<h1> ----- add a user to a clique ----- </h1>";
        print_r($plurk->add_to_clique("test1", 3440147));
       
        echo "<h1> ----- remove a user from a clique ----- </h1>";
        print_r($plurk->remove_from_clique("test1", 3440147));
       
        echo "<h1> ----- delete a clique ----- </h1>";
        print_r($plurk->delete_clique("test1"));  
        */
     
    }
}
/* End of file welcome.php */
/* Location: ./system/application/controllers/welcome.php */

底下載入相關設定以及 Plurk Library,當然也可以設定在 application/config/autoload.php 裡面喔

$this->config->load('plurk_config');
$this->load->library('plurk');

這樣就算是安裝成功了,大家可以試試看,如果需要程式碼,可以到 CodeIgniter-Plurk-API 下載完整的程式碼

INSTALLATION

Download all file from this site.

$ http://github.com/appleboy/CodeIgniter-Plurk-API/archives/master
$ git clone git://github.com/appleboy/CodeIgniter-Plurk-API.git

Copy some files into directory.

$ copy config/plurk_config.php your_application/config/
$ copy config/plurk_constant.php your_application/config/
$ copy libraries/Common.php your_application/libraries/
$ copy libraries/Plurk.php your_application/libraries/

Create logs directory, and chmod 755 directory

$ mkdir your_application/logs
$ chmod 755 your_application/logs
$ chown www:www your_application/logs

Edit config/plurk_config.php, and configure your api key, plurk username, and plurk password

$config['api_key'] = "xxxxx";
$config['username'] = "xxxxx";
$config['password'] = "xxxxx";

Test your controller file: welcome.php

http://localhost/welcome

Related View

support:

biggo.com.tw

A Django site.