Community

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

  • 投稿

    アバターSorcererspiral

    アクセストークン取得について

    チュートリアル通りにコマンドを叩いているのですが、bash: client_id=${××××}: bad substitutionのエラーメッセージが表示されトークン所得ができません。

    {}を外してコマンドを叩いていくと

    HTTP/2 401
    date: Fri, 14 Aug 2020 07:16:10 GMT
    content-type: application/json; charset=UTF-8
    status: 401 Unauthorized
    cache-control: no-cache, must-revalidate
    referrer-policy: strict-origin-when-cross-origin
    x-permitted-cross-domain-policies: none
    x-xss-protection: 1; mode=block
    x-request-id: 0e31ec09-5071-44d0-ac02-8cf7f1ae6571
    x-download-options: noopen
    x-runtime: 0.029987
    x-frame-options: SAMEORIGIN
    x-content-type-options: nosniff
    set-cookie: _admin_auth_session_id=×××××; domain=admin-web.freee.co.jp; path=/; secure; HttpOnly; SameSite=None

    このようなエラーメッセージが表示されます。対応策を教えてもらえるでしょうか?

    回答

    アバターyakumo

    レスポンスボディはありますか?

    ぱっと思い浮かぶのは認可コードの有効期限が切れたのかなと思います。
    認可コードをもう一度取得して試してみてください。

    それでもうまくいかないときは、クライアントID,クライアントSecret等を隠した状態で、

    リクエスト、レスポンスを共有してください。

    アバターSorcererspiral

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

     

    上記のメッセージがでるため新規のアプリ作成でも同様のエラーがでます。

    アバターyakumo

    メッセージにかいてあるとおり。パラメータで指定する、

    * クライアントID
    * クライアントシークレット
    * 認可コード

    のどれかの指定が間違えていると思います。

    シェル(CLI)の書き方やコピペミスなどが考えられます。

    なのでシェルを勉強いただくか、Postman など GUI のツールを試してみると良いかもしれません。

    どうしてもわからなければリクエスト (コマンド)も共有してください。
    過去見てきた中だと変数表記 ${} のカッコの中だけに文字列をかいてしまったり等で動いていないケースはありました。

    アバターSorcererspiral

    作業環境ですが仕様しているサーバーはEC2になります。

    CLIはamplifyのみをサーバーサイドで導入しています。コマンドは主に以下です。

    EC2上でのcurlコマンドは以下の通りです。

    curl -i -X POST \
    -H “Content-Type:application/x-www-form-urlencoded” \
    -d “grant_type=authorization_code” \
    -d “client_id=$xxxxx” \  #アプリ詳細のClainant IDから
    -d “client_secret=$xxxxx” \ #アプリ詳細のClient Secretから
    -d “code=$xxxxx” \ #アプリ詳細のWebアプリ認証用URLからアクセスした認証コードを入力
    -d “redirect_uri=$urn:ietf:wg:oauth:2.0:oob” \  #アプリ詳細のコールバックURLを入力
    https://accounts.secure.freee.co.jp/public_api/token’

     

    以上がコマンド操作の流れになります。何か落ち度があるようなのでしなければいけないことを教えていただけると助かります。CLIの導入がいる場合は何のCLIがいるのか教えていただけると助かります。

    アバターyakumo

    ぱっとみ問題なさそうです。
    “$xxxxx” の部分をアプリストアで確認出来る各種値に置換してください。
    ※ $ を含む

    それでもうまくいかない場合は、やはり各種値のコピペミスと認可コードの有効期限切れとかが考えられると思います。
    * コピペミスがないか
    * 認可コードの有効期限切れになっていないか (発行から10分)
    確認してみてください。

    CLI がいわゆるシェルで添付いただいたコマンドのことです。
    コマンド不慣れでしたら『シェル 変数』などで調べていただくか、
    Postman などのような GUI (ブラウザとかのようなボタン操作出来るようなUI) のツールで試してみるのも良いと思います。

    認可コードに関しては OAuth 2.0 の知見なので書籍等で勉強するとより理解を深められると思います。
    ※ チュートリアルだけでは実装に至るための知見としては不足すると思われます。