Community

コミュニティをご利用の際は 【ガイドライン】を確認・同意いただいた上でご利用ください。

  • 投稿

    アバターobaco

    VBAでアクセストークンが取得できない。

    VBAにて下記のようにアクセストークンを取得しようとしましたが

    {“error”:”invalid_request”,”error_description”:”必須パラメータが不足しているか、サポートされていないパラメータが含まれているか、もしくはパラメータが不正であるため、リクエストを処理できませんでした。”

    というエラーになってしまいます。
    どのように改善すれば良いでしょうか?どうぞよろしくお願いします。

    ———————————————————————————-

    ‘連携アプリ情報
    Dim APP_ID: APP_ID = “xxxxx”
    Dim SECRET: SECRET = “xxxxx”
    Dim CALLBACK_URL: CALLBACK_URL = “urn:ietf:wg:oauth:2.0:oob”
    Dim AUTH_CODE: AUTH_CODE = “xxxxx”

    ‘リクエスト先URLとリクエストボディ
    Dim url_api: url_api = “https://accounts.secure.freee.co.jp/public_api/token”
    Dim request_body: request_body = “grant_type=authorization_code” & “&client_id=” & APP_ID & “&client_secret=” & SECRET & “&code=” & AUTH_CODE & “&redirect_uri=” & UrlEncode(CALLBACK_URL)

    ‘レスポンスとトークンを格納する変数を宣言
    Dim js As String
    Dim AccessToken As String
    Dim RefreshToken As String

    ‘tokenのPOSTリクエストを送信
    With CreateObject(“MSXML2.XMLHTTP”)
    .Open “POST”, url_api, False
    .setRequestHeader “Content-Type”, “application/json”
    .send request_body
    js = .responseText
    End With

    ‘レスポンスからアクセストークン、リフレッシュトークンを取得
    js = “(” & js & “)”
    With CreateObject(“ScriptControl”)
    .Language = “JScript”
    AccessToken = .CodeObject.eval(js).access_token
    RefreshToken = .CodeObject.eval(js).refresh_token
    End With

    ———————————————————————————-

    回答

    アバターyakumo

    チュートリアルにあるように、curl で実行した場合はどうなりましたか?
    curl でも同じ症状の場合、パラメータの見直しを行い。

    curl だと異なる症状であれば、VBAのコード上に問題があると思うので。
    デバッグして行くのが良いと思います。

    P.S.
    認可コードは 10 分で有効期限が切れてしまうのでご注意ください。

    アバターyakumo

    Postman など REST Client で試してみるのも良いかと思います。
    そうするとパラメータの正当性のみに注目できるので、徐々に課題の箇所が絞れると思われます。

    アバターobaco

    ご返答ありがとうございます。
    下記のエラーがでました。

    {“error”:”invalid_client”,”error_description”:”クライアントが不明か、クライアント認証が含まれていないか、もしくは認証メ ソッドがサポートされていないため、クライアント認証は失敗しました。”}

    これだけでは特定は難しいでしょうか?
    Postmanについて検討してみます。

    アバターyakumo

    curl ではどのような書式で書きましたか?

    現状特定は難しいです。
    * 純粋にパラメータが正しくない: タイポやコピペミス
    * 各種関数・コマンドの利用方法が間違えている
    ぐらいしか想像できません。

    私の手元では成功してます (VBAでの確認はしていません)。
    きちんと比較したわけではないのであれですが、ぱっとみタイポもなさそう?(確認はしてみてください)
    なので、パラメータが間違えているのが有力かなと思われます。

    アバターobaco

    コールバックURLは「urn:ietf:wg:oauth:2.0:oob」を指定すれば良いでしょうか?

    アバターyakumo

    アプリの管理画面で確認できるコールバックURLになります。
    今一度、スタートガイドやチュートリアルの手順を確認してみてはいかがでしょうか?

    あとは、OAuth2.0 の知識は必要になってくるので。
    サイトや書籍で勉強すると良いと思います。

    アバターobaco

    他の方の投稿と回答にありました、${}をとるということを行いましたらうまくいきました。

    お手数をおかけしました。ありがとうございます。