footmark

ひよっこエンジニアの足跡

【Flask】チュートリアル【その1】

せっかくFlaskをインストールしたので、公式のチュートリアルにトライしてみたいと思います。

【公式】チュートリアル
チュートリアル — Flask v0.5.1 documentation

【当ブログ】Flaskのインストール
Virtualenv超入門 - footmark

【当ブログ】FlaskでHello World!
Vagrant + Flask で Hello World! - footmark

チュートリアルは全部で8回(Step 0-7)あり、Flaskrというマイクロブログを作成していきます。
機能は以下の通り。

  1. 設定したユーザーのみがログイン、ログアウト可能
  2. ログインした状態でのみ新規エントリーを作成可能です
  3. すべてのエントリーを表示可能です。新しいエントリーが上に表示されます

Flaskrについて — Flask v0.5.1 documentation


ま、習うより慣れろ精神で細かいことは後から考えていきましょう(?)

続きを読む

ホームページに自分のツイートを表示する(セキュリティ編)

前回、Twitter APIを使って自分のツイートを取得しよう的なことをやりましたが、記事中のソースコードを見て、consumer_key等を表示するファイルにベタ書きするのは良くないんじゃね??と思ったので簡単に調べてみました。

  1. サーバに問題が発生して、PHPが正常に動作しなかった際にソースコードが表示される
  2. ソースコードに問題があり、PHPが実行されなかった際にソースコードが表示される
  3. 上2点のような問題がない限り、ソースコードは表示されない=consumer_key等はバレない(例外はありそうですが)


1. も2. も起こりそうです。。。
対策としては、別ファイルに記述し、それを呼び出すが手軽で良さそうです。
手軽で、と書いたのは、モデルやフレームワークを使用しないレベルでということです。

目的と手段

セキュリティを高めたい

そのために、

  1. 見られたら困るものを別ファイルに隠す
  2. 呼び出す

見られたら困るものを別ファイルに隠す

これだけ。

<?php
// twitter_app_info.php

$twitter_app_info = [
    'consumer_key' => 'hoge',
    'consumer_secret' => 'hoge',
    'access_token' => 'hoge',
    'access_token_secret' => 'hoge'];

呼び出す

これだけ。

<?php
// yumeochis_tweets_getter.php

require_once 'twitteroauth/twitteroauth.php'; // OAuth用ライブラリ「twitteroauth」
require_once 'twitter_app_info.php'; // Twitterアプリ情報

// OAuth用オブジェクトの生成
$tw_obj = new TwitterOAuth (
  $twitter_app_info[consumer_key],
  $twitter_app_info[consumer_secret],
  $twitter_app_info[access_token],
  $twitter_app_info[access_token_secret]);

(以下略

まとめ

見られたくない雑誌を机の上じゃなくてベッドの下に置いておくように、少しの手間でセキュリティは高められることを実感しました。

ホームページに自分のツイートを表示する(ツイート取得編)

1週間はえええ。

 

ユキミネです。

 

先日、僕が歌っているユメオチというアコースティックグループのホームページを作りました。

 

http://yumeochi.com/

 

まだほとんどコンテンツもなく、これから何を足していこうかという状態なんですが、とりあえずユメオチのアカウントのツイートを表示することにしました。

「そんなん公式のガジェット使えばいいやん」

そう思っていた時期が僕にもありました。

大好きなきゃりーぱみゅぱみゅのホームページを見るまでは。

 

http://kyary.asobisystem.com/

 

この表示の仕方かっけえええ!!!

どうやっているのか分かりませんが、なんとなくTwitter APIを使っている気がします。

(既存のガジェット探せばあるかもしれないけど、それじゃ技術ブログにならないからやってないよ!)

 

やりたいこと

  • ホームページに(自分の)音楽アカウントのツイートを載せたい
  • お知らせ的な使い方をしたいので、リプライやリツイートはいらない(載せたくない)

 

参考にしたページ

Twitter API、周りの人は結構使ってるんですが、僕は初だったので1からスタートでした。

参考にしたページはこちら。

 

 

というかほぼそのまんまです。

この場を借りて御礼申し上げます。

というわけでガンガン割愛しながら進めていきます。

今回やることはこちら。

 

  1. Twitterアプリの登録(割愛)

    Twitter Developers

  2. OAuth用ライブラリのダウンロード(割愛)

    abraham/twitteroauth · GitHub

  3.  

    表示したいアカウントを含んだリストのIDを取得
  4. 3. のリストのツイートを取得
  5. ツイートの表示(次回)

 

表示したいアカウントを含んだリストのIDを取得

指定したユーザのタイムラインを取得する方法もあるのですが、それだとそのユーザがフォローしている人のツイートやリプライも拾ってしまうので、表示させたい人(今回はユメオチのアカウント)だけを追加したリストを作って、そのリストのツイートを表示することにしました。

 

>|php|

 

<?php

/*

===== 参考 =====

Twitter API1.1でwebサービスを作ろう!入門チュートリアル

http://programmerbox.com/2013-07-16_twitter_api_1.1_tutorial

*/

 

// twitteroauth

require_once 'twitteroauth/twitteroauth.php';

 

// Twitterアプリ情報

$consumer_key = 'hoge';

$consumer_secret = 'hoge';

$access_token = 'hoge';

$access_token_secret = 'hoge';

 

// オブジェクト生成

$tw_obj = new TwitterOAuth (

    $consumer_key,

    $consumer_secret,

    $access_token,

    $access_token_secret

);

 

// REST API、メソッド、オプションの指定

$tw_rest_api = 'https://api.twitter.com/1.1/lists/ownerships';

$request_method = 'GET';

$options = [

    'user_id' => 'hoge'

];

 

// リクエストの送信

$tw_obj_request = $tw_obj->OAuthRequest (

    $tw_rest_api,

    $request_method,

    $options

);

 

// レスポンスをjson形式で受け取って表示

$tw_obj_request_json = json_decode($tw_obj_request, true);

var_dump($tw_obj_request_json);

 

||<

 

json形式でリストに関する情報がばーっと返ってきますが、listsキーの中のarrayのidキーの中に入っている数字が目当てです。

 

個人的に「自分1人だけのリストもなあ〜」と思ったので非公開設定で作りました。

ちなみに

>||

GET lists/ownerships

<||

はuser_idに自分(Twitterアプリの登録をしたアカウント)を設定すると、非公開設定のリストだけを返すみたいです。

 

3. のリストのツイートを取得

3. で取得したリストのIDをlist_idに代入します。

>|php|

<?php

/*

===== 参考 =====

Twitter API1.1でwebサービスを作ろう!入門チュートリアル

http://programmerbox.com/2013-07-16_twitter_api_1.1_tutorial

*/

 

// twitteroauth

require_once 'twitteroauth/twitteroauth.php';

 

// Twitterアプリ情報

$consumer_key = 'hoge';

$consumer_secret = 'hoge';

$access_token = 'hoge';

$access_token_secret = 'hoge';

 

// オブジェクト生成

$tw_obj = new TwitterOAuth (

    $consumer_key,

    $consumer_secret,

    $access_token,

    $access_token_secret

);

 

// REST API、メソッド、オプションの指定

$tw_rest_api = 'https://api.twitter.com/1.1/lists/statuses.json';

$request_method = 'GET';

$options = [

    'list_id' => 'hoge',

    'count' => 3,

    'include_rts' => false

];

 

// リクエストの送信

$tw_obj_request = $tw_obj->OAuthRequest (

    $tw_rest_api,

    $request_method,

    $options

);

 

// レスポンスをjson形式で受け取ってツイートのみを表示

$tw_obj_request_json = json_decode($tw_obj_request, true);

$time_line_texts = '';

foreach ($tw_obj_request_json as $key => $value) {

  $time_line_texts .= '<p>'.$value["text"].'</p>';

}

print($time_line_texts);

||<

結果はこちら。

>||

いきなり城址公園でライブ!! 足を止めて聴いて下さった方々、本当にありがとうございました! これからライブカフェでライブです!! 三浦トシアキさんとSHOWBEN小僧にてお待ちしております(*^^*) http://t.co/ImbowcTWo0 新津駅にて!! これから新発田SHOWBEN小僧 のフリーマイクに参戦! http://t.co/zaTfOGeW5P

||<

countオプションで3件取得するように、include_rtsオプションでリツイートを含まないようにしているんですが、

  • リツイートを除く3件を取得

ではなく

  • 3件取得してからリツイートを除く

ようですね。

あんまり、countの値が小さいと、リツイートを多用した際に1件も取得できなくなってしまいそうです。

 

つづく

次週は取得したツイートを組み込んでいきます。