Google+ Hangouts API を使う #3

[API] Google+ Hangouts API を使う #1 – Hangout プロジェクトを作成する
[API] Google+ Hangouts API を使う #2 – Hangout アプリケーションを記述する

Google+ Hangouts API (v1.2 / 2012年8月現在) > Running Hangout Apps 翻訳

アプリケーションのXMLを公開する

パブリックアクセス可能なURLに、ガジェットXMLファイルをアップして公開する必要があります。(Google App Engine のアプリケーションや、Google Project Hosting のレポジトリのような安定したURL)
続きを読む

Google+ Hangouts API を使う #2

[API] Google+ Hangouts API を使う #1 – Hangout プロジェクトを作成する

Google+ Hangouts API (v1.2 / 2012年8月現在) > Writing Hangout Apps 翻訳

Hangoutアプリケーションを記述する

Hangout アプリケーションは、基本的なHTML、JavaScript とCSSを使って記述します。 (必要なときに、アプリケーションはさらに任意のサーバーAPIと通信することができますが、それはこのドキュメントの範囲外です。)
starter app は、自分のアプリケーションに基礎として使用できる単純な骨組みです。
このページのほかのサンプルも参考にしてください。 ダウンロードした README.txt ファイルの手順に従ってください。

以下、アプリケーションを記述するために重要な3点。

 
 

Gadget XML(アプリケーションのメインになるファイル)

<?xml version="1.0" encoding="UTF-8" ?>
<Module>
  <ModulePrefs title="Your App Name">
    <Require feature="rpc"/>
    <Require feature="views"/>
  </ModulePrefs>
  <Content type="html">
    <![CDATA[
      <script src="//talkgadget.google.com/hangouts/_/api/hangout.js?v=1.2"></script>
      <!-- Your application code -->
    ]]>
  </Content>
</Module>

XMLファイルは、アプリケーションの名前(<ModulePrefs title=”Your App Name”>)とコードを置き換えて、サンプルコードXML に従ってください。 ModulePrefs セクションの”rpc” を Require してください(<Require feature=”rpc”/>)。
自分のアプリケーションにデータを渡したい場合は、”views”をRequireしてください(<Require feature=”views”/>)。

アプリケーションのコードは、標準のHTML、JavaScript、およびCSSで構成する必要があります。hangout にロードされたときに、Content要素の内容は、hangout 内部のiframe にロードされます。hangout.js ファイルを含めることによって、アプリケーションはHangouts JavaScript API にアクセスします。標準的なスクリプトやHTML要素のリンクを使用して、アプリケーションの外部JavaScript/CSSファイルの一部または全部を読み込むことができます。

Googleのサーバーによってフェッチされることができるように、 アプリケーションのXMLファイルは、パブリックアクセス可能なURLで公開する 必要があります。外部JavaScriptファイルとCSSファイルは、必ずしもパブリックURLでホストする必要はありませんが、hangout の参加者のブラウザからアクセスできるようにしてください。
 
 

Application state

Hangoutセッション中には、単一のstate objectがHangoutの全てのアプリケーションインスタンス間で共有されます。

  {
  'leader': participantId,
   'highScore': '112358132134'
  }

State values は文字列でなければなりません。
State にオブジェクトを格納したい場合は、それぞれ、それらをシリアル化および逆シリアル化するために JSON.stringify(obj)JSON.parse(obj) を使用することができます。

Application state は gapi.hangout.data名前空間 の関数を使用して管理、アクセスします。

 
 

Events

HangoutsAPI は、特定のアクションをトリガーするためにアプリケーションで使用できる多くのイベントが含まれています。 on*.add 関数のいずれかを使用して、特定のイベントが発生したときに呼び出されるコールバック関数を登録します。
(イベント >> API のReady状態。アプリケーションの表示。参加者がHangoutに参加。マイクがミュートされた。ボリュームの変更。共有状態の変更。通知の表示、など。)
on*.remove 関数を使用して、登録済みのイベントコールバックを削除します。

var onStateChange = function(eventObj) {
  for (var i = 0; i < eventObj.addedKeys.length; ++i) {
    foo(eventObj.addedKeys[i].key,
        eventObj.addedKeys[i].value,
        eventObj.addedKeys[i].timestamp);
  }
  for (var j = 0; j < eventObj.removedKeys.length; ++j) {
    bar(eventObj.removedKeys[j]);
  }
  state_ = eventObj.state;
  metadata_ = eventObj.metadata;
};
gapi.hangout.data.onStateChanged.add(onStateChange);

var onParticipantsChange = function(eventObj) {
  participants_ = eventObj.participants;
};

gapi.hangout.onParticipantsChanged.add(onParticipantsChange);

Tip:アプリケーションのコードがAPI が初期化された後にのみ実行されることを確認するには、ApiReady イベントを 取得するコールバックを登録してください。
gapi.hangout.onApiReady.add(function(eventObj){
  if (eventObj.isApiReady) {
    startMyApp();
  }
});

※そのほかのイベント詳細については APIリファレンスを参照してください。

[API] Google+ Hangouts API を使う #3 – Hangout アプリケーションを動作させる

Google+ Hangouts API を使う #1

Google+ Hangouts API (v1.2 / 2012年8月現在) > Getting Started 翻訳

1.Simple Hangout App をダウンロードしてホストする。

 
 

2.プロジェクトを作成する。

Google+ Hangouts APIを使う前に、Google APIs sconsole でプロジェクトを作成する必要があります。アプリケーションを Developer Sandbox で動作させるためにOAuth2.0 は必要ありません。

  ・ APIs console ページ を開く

  ・ 左メニューの上部の API Project プルダウンリストから Create をクリックし、プロジェクト名を入力する。

  ・ Google web service のリストが表示されるので、一覧から Google+ Hangouts API ON にし、サービスの使用条件に同意する。

 
 

3.Hangout App を動かす

   APIs console ページ の左メニューから Hangouts をクリックする。

  ・ Application URL のフィールドにXMLファイルのURLを入力する。  
    ex)http://url-to-your-xml-file  
    step1を省略した場合は、Google が既にホストしている public example XML file のURLを入力する。↓  
    https://plushangoutstarter.appspot.com/static/simpleHangoutApp.xml

  ・ Save ボタンをクリックする。
  ・ Save ボタンの下に Enter a hangout のリンクが表示される。左記のリンクをクリックして Hangout App を起動させる。

  ※ 起動した Hangout App は、 Developer Preview と表示されているように、Developer Sandbox 上で動作している。
このページのボタン等の詳細については、Running your app in Developer Sandbox を参照する。

[API] Google+ Hangouts API を使う #2 – Hangout アプリケーションを記述する

Instagram API を使う

Client IDを取得する

1. Instagram Developer Documentation にアクセスして、 Register your application ボタンをクリックする。(要ログイン)

2. デベロッパー登録をする( URL・電話番号・APIを使って何を構築するか 、をそれぞれ記入)。

3. Manage Clients 画面 > Register a New Client ボタン > Register new OAuth Client 画面で、 アプリケーション名・(アプリケーションについての)説明・WebSite・OAuthのリダイレクトURL をそれぞれ記入。(全項目入力必須、後で編集可能)

4. 取得したClientIDを使って情報を取得(JSON形式)。

https://api.instagram.com/v1/media/popular?client_id=CLIENT-ID

※個人の投稿した写真を見る時や、コメントやLikeを管理する際には、 AOuth認証が必要となってくるが、ポピュラー写真を閲覧するだけの場合は特に認証は必要ない。

 
 

AOuth認証( Access Token を取得する)

1. Access Token を取得するために必要な code を取得する。

https://api.instagram.com/oauth/authorize/?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=code

上記のURLに自分が登録した値を入力してブラウザからアクセスする。

 
2. 遷移した画面で認証すると、redirect_uri に設定したURLにcode 付きでリダイレクトされる。

http://REDIRECT-URI?code=xxxxxxxxxxxxxxxxx

※ユーザがアクセスを拒否した場合以下の結果を返すので、適宜エラー処理を行う
error: access_denied
error_reason: user_denied
error_description: The user denied your request

 
3. Access Token を要求する。

[ AccessToken の取得に必要なパラメータ ]
client_id … クライアントID
client_secret … クライアントシークレット
grant_type … 現在、”authorization_code”のみ指定することができる。
redirect_uri … 認証リクエストを送信した際にredirect_uriで指定した値。(注意: この値は、認証リクエストで指定した値と完全に一致していなければならない。)
code … 認証ステップで受け取ったcodeパラメータの値
※トークンの有効期限が含まれないことに注意する。返されたaccess_tokenは、明示的な有効期限はない。アプリケーションは、ユーザがアクセスを拒否したり、一定時間経過後にトークンの有効期限が切れた場合を適切に処理する必要がある。その場合には、レスポンスデータのmeta情報に “error_type=OAuthAccessTokenError” という値が入る。

今回、取得したAccessTokenはSessionに入れて管理した。

Microsoft Translator API service を使う

Google Translater APIが有料になってしまったので、無料のプランがある Microsoft の翻訳APIを使い、翻訳サービスを作成する

手順1)) Microsoft Translator APIの利用登録

1. Windows Azure Marketplaceにアクセス(要WindowsLiveID)

2. Microsoft Translatorの登録ページへ。1txは1000文字。
 ・¥12,559/1ヶ月(16000 tx/1ヶ月)
 ・¥6,280/1ヶ月 (8000 tx/1ヶ月)
 ・¥4,710/1ヶ月(6000 tx/1ヶ月)
 ・¥3,140/1ヶ月(4000 tx/1ヶ月)
 ・¥0 (2000 tx/1ヶ月)

3. 利用規約に同意すると、 マイアカウント の マイデータ ページにMicrosoft Translatorが表示される。

手順2)) アクセストークン を取得する

1. Azure DataMarket にアプリケーションを登録
クライアントID、名前、顧客の秘密(デフォルトで入力済)、リダイレクトURIを入力。説明の項目は任意で入力。
クライアントID以外の項目は後で編集可能。

2, アクセストークンの生成、取得のサンプルソース(PHP。プログラムにあわせて要修正)
AjaxInterfaceを使う —->>サーバーサイドでアクセストークンを取得し、クライアントサイドで 翻訳メソッドを処理実行。

……………………………………………………………………………………………………………………………………………………………………………

Obtaining an Access Token (アクセストークン を取得する) ページ内の一部訳

Bing AppID は廃止され、これ以上サポートされません。 前述したように、MicrosoftTranslator APIを使用してアクセストークンを取得する必要があります。アクセストークンは、OAuthの規格に準拠し、より安全であり、より柔軟性があります。
アクセストークンの値は、MicrosoftTranslatorAPIへのsubsequent の呼び出しに使用することができます。 (以下略

・プリフィックス “Bearer”+ ” ” + アクセストークンプロパティーの値 をAuthorization ヘッダとし、Microsoft Translator APIを呼び出す。
・*appid* のフィールドは空のままにする。
・アクセストークンは 10分間有効 。 有効期限が切れた場合は、再度アクセストークンを生成する。
・それぞれのリクエストでの 最大文字数は1000文字 まで。スペースとマークアップ文字を含む。

……………………………………………………………………………………………………………………………………………………………………………

Microsoft Translator API と x-webkit-speech(音声入力/Chrome) 使用して作成したWeb翻訳サービス