LoginSignup
2
4

More than 5 years have passed since last update.

Facebook Graph API 用の無期限のアクセストークンを生成する

Last updated at Posted at 2018-09-07

Facebook Graph API を叩くプログラムを開発するために、
無期限のアクセストークンを生成するスクリプトを書いた。

Never Expiring Facebook Long Lived Access Token, Facebook Graph API でやっている内容と同等だと思う。

最初のアクセストークンは https://developers.facebook.com/tools/explorer から取得でき
期限の確認は https://developers.facebook.com/tools/debug/accesstoken/ からできる

none_expired_token.js
(async () => {
  const axios = require('axios')


  const config = {
    redirect_uri: 'https://..../callback',
    client_id: '978620.....',
    client_secret: 'f50fcd29bb66.............',
  }

  // Usage
  // $ node none_expired_token.js $FB_ACCESS_TOKEN
  //
  // $FB_ACCESS_TOKEN as User Access Token from
  // https://developers.facebook.com/tools/explorer

  const fb_exchange_token = process.argv[2]

  // main
  const client = axios.create({
    baseURL: 'https://graph.facebook.com',
  })
  let response = null
  response = await client.post(`/oauth/access_token`, {
    redirect_uri: config.redirect_uri,
    grant_type: 'fb_exchange_token',
    client_id: config.client_id,
    client_secret: config.client_secret,
    fb_exchange_token,
  }).catch(e => {
    const message = e.response.data.error
    console.error(message)
  })

  const access_token = response.data.access_token

  response = await client
      .get(`/me/accounts`, {
        headers: {
          'Authorization': `Bearer ${access_token}`
        },
      })
      .catch(e => {
        const message = e.response.data.error
        console.error(message)
      })

  response.data.data.forEach(data => {
    console.log(data)
  })
})()

おまけ: Koala(Ruby)版

OAuth#exchange_access_token_info というメソッドが生えてる。

oauth = Koala::Facebook::OAuth.new(app_id, secret, callback_url)
result = oauth.exchange_access_token_info(oauth_token)
source_access_token = result['access_token']

graph = Koala::Facebook::API.new(source_access_token)
accounts = graph.get_object("me/accounts")

puts accounts
2
4
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
2
4