LoginSignup
0
0

More than 5 years have passed since last update.

Titanium AppからGoogleのAPIを叩いてユーザのdisplayNameを取得してくる

Posted at

きっかけ

最近あまりTitaniumを触っていなかったのですが,某Titaniumおじさんからサンタさんが日本に到着するまでにTitanium AppからGoogleのAPIを叩いてdisplayNameを取得してほしいと言われた(2015/12/24 18:00ごろ)のがきっかけです.

ユーザ情報を取得してくるためのURL

決め打ちで一人のユーザの情報を取得してくるだけならhttps://www.googleapis.com/plus/v1/people/123456789?key=apiKeyのようにユーザIDとGoogle Developers Consoleで作ったAPI keyを書いておけば取得してこれます.
しかし,今回は決め打ちではなくアプリ内でログインしたアカウントの情報を取得してきたかったのでhttps://www.googleapis.com/plus/v1/people/me?access_token=hogehogeとて,ログインしているアカウントの情報を取得してこれるようにしました.
後者ではなぜかkey=apiKeyがいらないらしいです.後でいらない理由を調べてみようかなと思います.

お借りしたライブラリ

流石にログインAPI叩くところからやり始めるとサンタさんが日本を通り過ぎてしまうと思ったので調べてみたら,GitHubにejci/Google-Auth-for-Titaniumなるライブラリがあったのでありがたく使わせていただきました.

書いたソースコード

そこまでガリガリと書いたわけでもないのですが,とりあえず app/controller/index.js の中身を載せておきます.
まあ,ほとんどejci/Google-Auth-for-Titaniumのreadmeに書いてあることをそのまま書いただけなんですが...^^;

app/controller/index.js
var GoogleAuth = require('googleAuth');
var googleAuth = new GoogleAuth({
  clientId: 'CLIENT-ID', /* Google Developers Consoleで発行されたクライアントIDをここに */
  propertyName: 'googleToken',
  scope: [
    "https://www.googleapis.com/auth/plus.login",
    "https://www.googleapis.com/auth/plus.me",
    "https://www.googleapis.com/auth/userinfo.profile",
  ],
});

var url = "https://www.googleapis.com/plus/v1/people/me";

$.button.addEventListener('click', function(){
  googleAuth.isAuthorized(function(){
    getDisplayName(function(displayName){
      alert(displayName);
    });
  }, function(){
    googleAuth.authorize(); /* ログインしていないとこっちの処理が実行される */
  });
});

$.index.open();

function getDisplayName(cb){
  var xhr = Ti.Network.createHTTPClient({
    onload : function(e) {
      cb(JSON.parse(this.responseText).displayName);
    },
    onerror : function(e) {
      Ti.API.debug(e);
    },
    timeout : 5000
  });
  xhr.open('GET', url + '?access_token=' + googleAuth.getAccessToken());
  xhr.send();
}

View側はalloy newで生成されたindex.xmlの中のLabelidbuttonに変更しただけなので省略します.

おわりに

なんとかサンタさんが来る前にプログラムは書き終えられました.(2015/12/24 20:00ちょいすぎ)
が,この記事を書いている間にサンタさんは日本を通り過ぎてしまいました.あー悲し.

今回は書いていませんが,コードを書く前に色々と準備が必要です.例えばGoogle Developers Consoleでプロジェクトを新規作成して,iOSのBundle IDを発行したりとかとか...
ただ,そういったのは探せば日本語の記事が結構あるのでそちらを見てもらえればと思います.こちらとかとか.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0