class Freee::Api::Token

Constants

AUTHORIZE_URL

Freee 認証コードURL

DEVELOPMENT_REDIRECT_URL

Freee 開発環境用認証コードURL

TOKEN_URL

Freee Token URL

Attributes

client[R]

oauth-xx client(read only)

Public Class Methods

new(app_id, secret) click to toggle source

A new instance of OAuth2 Client. @param app_id [String] Application ID @param secret [String] Secret

# File lib/freee/token/client.rb, line 21
def initialize(app_id, secret)
  options = {
    site: Parameter::SITE,
    authorize_url: AUTHORIZE_URL,
    token_url: TOKEN_URL
  }

  raise 'アプリケーションIDが入力されていません' if app_id.empty?
  raise 'Secretが入力されていません' if secret.empty?
  @client = OAuth2::Client.new(app_id, secret, options)
end

Public Instance Methods

authorize(redirect_uri) click to toggle source

本番環境用に認証コード・アクセストークンのコールバックURLを生成 @param redirect_uri [String] redirect_url for Authentication Code @return [String] Freee 本番環境用認証コードURL

# File lib/freee/token/client.rb, line 42
def authorize(redirect_uri)
  raise '認証用コードを返すためのリダイレクトURLが指定されていません' if redirect_uri.empty?
  @client.auth_code.authorize_url(redirect_uri: redirect_uri)
end
development_authorize() click to toggle source

開発環境用に認証コード・アクセストークンのコールバックURLを生成 @return [String] Freee 開発環境用認証コード・アクセストークン取得用URL

# File lib/freee/token/client.rb, line 35
def development_authorize
  @client.auth_code.authorize_url(redirect_uri: DEVELOPMENT_REDIRECT_URL)
end
get_access_token(code, redirect_uri) click to toggle source

アクセストークン関係のパラメータを取得 @param code [String] Authentication Code @param redirect_uri [String] redirect_url for Access Token @return [Hash] アクセストークン

# File lib/freee/token/client.rb, line 51
def get_access_token(code, redirect_uri)
  raise '認証用コードが存在しません' if code.empty?
  raise 'アクセストークンを返すためのリダイレクトURLが指定されていません' if redirect_uri.empty?
  begin
    @client.auth_code.get_token(code, redirect_uri: redirect_uri)
  rescue OAuth2::Error
    raise 'アクセストークンの取得に失敗しました。次の原因が考えられます。原因: 不明なクライアント、クライアント認証が含まれていない、認証コードが不正、認証コードが無効、リダイレクトURLが不正、別のクライアントに適用されている。'
  end
end
refresh_token(access_token, refresh_token, expires_at) click to toggle source

リフレッシュトークンからアクセストークンを再取得 @param access_token [String] Access Token @param refresh_token [String] Refresh Token @param expires_at [Integer] アクセストークンの有効期限(UNIX TIME) @return [Hash] アクセストークン

# File lib/freee/token/client.rb, line 66
def refresh_token(access_token, refresh_token, expires_at)
  raise 'アクセストークンが存在しません' if access_token.empty?
  raise 'アクセストークンの有効期限が指定されていません' if expires_at.nil?
  raise 'リフレッシュトークンが存在しません' if refresh_token.empty?
  params = {
    refresh_token: refresh_token,
    expires_at: expires_at
  }
  @access_token = OAuth2::AccessToken.new(@client, access_token, params)
  begin
    @access_token.refresh! if @access_token.expired?
  rescue OAuth2::Error
    raise 'アクセストークンの取得に失敗しました。次の原因が考えられます。原因: 不明なクライアント、アクセストークンが不正、リフレッシュトークンが不正、有効期限が不正。'
  end
end