TwitterBotを作成するときに、TwitterAPIのKEYをどこに記述するかについてまとめました。
導入
Laravelでは、DBのホストIPや接続用パスワードなどを記述する場所が用意されています。(厳密には環境ごとに異なる設定を書く場所ですが)
それはLaravelのプロジェクトファイルのルートディレクトリにある、『.env』というファイルになります。
(【.envがない場合】)
.env.example が同階層に存在していると思います。これを同階層にコピーして .env と名前を変更して使用しましょう。
実装方法
今回私はTwitterのAPIを使用したかったので、以下の
- consumer_key (TWITTER_API_KEY)
- consumer_secret (TWITTER_API_SECRET)
- access_token (TWITTER_ACCESS_TOKEN)
- access_secret (TWITTER_ACCESS_TOKEN_SECRET)
の4つの文字列の秘匿情報を記述します。
手順としては、以下の3つです。
- .env に記述
- config ファイルに記述
- 使用したい場所でconfig ファイルを読み込む
1. .env に記述
最初の手順として、.envに以下のように追記します。
2. config ファイルに記述
実は 1. 完了時点で、.envに書いた秘匿情報をController等で使用することが可能です。しかし、あまりスマートではない気がするので私は一度Config経由で使用します。
configファイルの場所は、
(projectのルート) / config / 〇〇.php
となります。
初期状態で既にapp.php や session.php などのconfigファイルが存在していると思います。
今回はtwitterのAPI関連で使用する configファイル twitter.php を新規作成してみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// twitter.php <?php return [ 'API_KEY' => env('TWITTER_API_KEY'), 'API_SECRET' => env('TWITTER_API_SECRET'), 'ACCESS_TOKEN' => env('TWITTER_ACCESS_TOKEN'), 'ACCESS_TOKEN_SECRET' => env('TWITTER_ACCESS_TOKEN_SECRET'), 'CHARACTER_SELECTION_NUM' => 3, 'CHARACTER_SELECTION_FIXED_NUM' => 1, 'CHARACTER_SELECTION_RANDOM_NUM' => 2, 'ANNOUNCE_MESSAGE' => "お疲れ様です!ワンドロお題発表のお時間となりました!\r\n本日のお題は、以下となります!\r\n#ハチナイ版深夜の真剣お絵描き60分一本勝負\r\n", 'HASH_TAG' => '#ハチナイ版深夜の真剣お絵描き60分一本勝負', 'ANNOUNCE_IMAGE_PATH' => '/images/announce.png', 'ANNOUNCE_FONT_PATH_01' => '/fonts/AsobiMemogaki.ttf', 'ANNOUNCE_FONT_PATH_02' => '/fonts/azuki.ttf', 'BIRTHDAY_MESSAGE' => "日付が変わりました、お疲れ様です!\r\n本日も、たゆたゆが誕生日情報をお届けします!", 'BIRTHDAY_IMAGE_PATH' => '/images/announce2.png', 'BIRTHDAY_FONT_PATH_01' => '/fonts/AsobiMemogaki.ttf', 'BIRTHDAY_FONT_PATH_02' => '/fonts/azuki.ttf', 'BIRTHDAY_ANNOUNCE_INTERVAL' => 3, 'TWITTER_HANDLE' => "draw_hachinai", ]; |
.env に書いた秘匿情報は env( ) 関数を使用して取得することができます。(4~7行目)
他に、Twitter関連の設定(つぶやき文言、フォント指定など)をここに書き連ねています。
秘匿情報を取得するために本当に必要なのは、return後の4行だけです。
3. 使用したい場所で config ファイルを読み込む
続いて、この秘匿情報を取得する方法ですが、使いたい場所(CommandやController、ModelやViewのどこでもOK) で以下のように記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// Retweet.php <?php namespace App\Console\Commands; ...(中略)... use Illuminate\Support\Facades\Config; ...(中略)... class Retweet extends Command { ...(中略)... public function handle() { $config = Config::get('twitter'); $connection = new TwitterOAuth($config['API_KEY'], $config['API_SECRET'], $config['ACCESS_TOKEN'], $config['ACCESS_TOKEN_SECRET']); /* $json = $connection->get( "search/tweets", ["q" => $keyword, "count" => 100] ); */ ...(中略)... } } } |
まずは、Configを読み込むためのライブラリクラスを読み込みます。
1 |
use Illuminate\Support\Facades\Config; |
Configで設定したものを取得する場合には Config::get(‘ [作成したconfigファイルの名前] ‘) で、設定値の連想配列が帰ってきます。
1 2 |
$config = Config::get('twitter'); $connection = new TwitterOAuth($config['API_KEY'], $config['API_SECRET'], $config['ACCESS_TOKEN'], $config['ACCESS_TOKEN_SECRET']); |
以上です。