7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Twitter APIを使って自動でTweetする(3)

Last updated at Posted at 2019-05-18

2019/5/26 更新
認可取得画面のURLが「https://api.twitter.com/oauth/authorize」だと何度も認可取得確認が表示されるため、「https://api.twitter.com/oauth/authenticate」に変更した。


第一回:Twitter APIを使って自動でTweetする」でRequest Tokenの取得を、「第二回:Twitter APIを使って自動でTweetする」でそれをAWSのAPI GatewayとLambdaにデプロイした。
今回は、取得したRequest Tokenを利用して、Twitterの認証を行う画面を作成する。画面はlambdaからのレスポンスでhtmlを返してもよかったが、vue.jsを使って作成し、S3のウェブサービスのホスト機能で公開することにした。とりあえず、今回はローカルでVueアプリを立ち上げるところまで。

引用

今回の記事を作成するにあたり、以下の記事を参考にした。


ちなみに、今回のアプリを作成にあたり、node.js(version 8.9.0)とvue(version 2.6.0)とvue-cli(version 3.7.0)を利用している。


$ npm install vue
$ npm install -g @vue/cli
$ vue create twitterapp  # いろいろと設定の確認があるが、すべてDefaultでOK
$ cd twitterapp
$ npm install bootstrap-vue  # bootstrapも使ってみたかったのでいれてみた


  • コンテンツの作成

main.jsでbootstrapをインポートし、利用できるようにする。

twitterapp/src/main.js
import Vue from 'vue'
import App from './App.vue'

import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

「Twitterでログイン」ボタンがあるだけのシンプルなページを作る。ボタンをクリックすると、前回作成したAPIを利用してRequest Tokenを取得し、それを使ってTwitterの認証APIにアクセスするようにした。

twitterapp/src/App.vue
<template>
  <div id="app">
    <button class="btn btn-primary" @click="login()">Twitterでログイン</button>
  </div>
</template>

<script>
export default {
  methods: {
    login () {
      // request_tokenの取得
      fetch('<Request Token取得APIのURI>', {method:"POST"})
    .then( response => {
      return response.text()
    })
    .then( auth_token => {
      // 取得したrequest_tokenを使ってTwitterの認証画面に遷移
      window.location.href = 'https://api.twitter.com/oauth/authorize?' + auth_token
    })
    .catch( () => {
    });
  }}
}
</script>
<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>
  • ローカルでサーバを稼働しアプリの動作を確認する

ローカルでサーバを実行して今回作成したアプリが正しく動作するか確認をする


$ npm run serve

サーバの起動に成功すると以下のようなメッセージが出る。

  App running at:
  - Local: http://localhost:8080/
  - Network: http://xxx.xxx.xxx.xxx:8080/

  Note that the development build is not optimized.
  To create a production build, run npm run build.

上記に表示された「http://localhost:8080/」にアクセスすると以下のように表示される。

「Twitterでログイン」ボタンをクリックすると以下のようにTwitterへのアクセス許可を求める画面が表示される。(Twitterに未ログインの場合は、その前にTwitterへのログイン画面が表示される。)

screen2.jpg

作成したアプリをS3で公開した記事を公開しました。

前回までの投稿は以下
Twitter APIを使って自動でTweetする(1)
Twitter APIを使って自動でTweetする(2)

7
8
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
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?