Community

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

  • 投稿

    アバターsato takayoshi

    APIの調査依頼

    APIを利用したシステム開発を行っています。
    動作確認のため、アプリの作成・削除とAPIのコールを繰り返し複数回行っていましたが、あるときからアプリ(プライベート)を新規作成し直後にAPI(https://accounts.secure.freee.co.jp/public_api/token)をコールしても、エラーが発生するようになりました。

    クライアント・クライアントシークレット・認可コード・リダイレクトURL共に正しいことを確認しており、原因が特定できません。
    原因を調べていただくことは可能でしょうか?
    また、可能であればどのように非公開で接続情報をお渡ししたらいいでしょうか?
    よろしくお願いいたします。

    回答

    アバターyakumo

    具体的にはどのようなリクエストを送り、どのようなレスポンスが返ってきましたか?
    エラーにもよりますが、何かしら誤りがあるのかなと思います。

    client_id, client_secret 等を伏せた状態で、リクエストとレスポンス内容を教えていただけますか?

    アバターsato takayoshi

    コメントいただきありがとうございます。
    当初APIの接続は行えていましたが、テスト中、アクセストーク・リフレッシュトークンの保持に失敗し
    以下のエラーが出るようになりました。

    【エラー】
    {“error”:”invalid_grant”,”error_description”:”指定された認可グラントは不正か、有効期限切れか、無効か、リダイレクトURIが異なるか、もしくは別のクライアントに適用されています。”}

    そこでアプリ自体(プライベートアプリでフルアクセス権)を削除・再作成し、これまでと同様に、API(https://accounts.secure.freee.co.jp/public_api/token)で認可コードからアクセストークを取得しようとしたところ、
    再び上記エラーが出てアクセストークを取得できませんでした。
    (削除・再作成は何度か繰り返しています)

    言語はPHPを利用していますが、その際のアクセスは以下の通りです。

    【PHP】
    $ch = curl_init(“https://accounts.secure.freee.co.jp/public_api/token”);
    $headers = [‘Content-Type:application/x-www-form-urlencoded’];
    $params = [
    ‘grant_type’ => “authorization_code”,
    ‘client_id’ => “クライアントID”,
    ‘client_secret’ => “クライアントシークレット”,
    ‘code’ => “認可コード”,
    ‘redirect_uri’ => “urn:ietf:wg:oauth:2.0:oob”
    ];

    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    過去に動作実績があるのでプログラム以外が問題ではないかと疑っていますが、何か心当たりがありましたら、
    アドバイスお願いいたいます。

    アバターsato takayoshi

    追記)

    URLに誤記がありましたので訂正いたします。正しくは以下の通りです。

     

    https://accounts.secure.freee.co.jp/public_api/token

    アバターyakumo

    typo  とかはもう確認されてますよね?
    認可コードの有効期限切れてたりしませんか?
    たしか10分だった気がします。

    アバターsato takayoshi

    >typo とかはもう確認されてますよね?

    申し訳ありません。typoが理解できていないのですが、アプリ作成時のパラメータでしょうか?APIのパラメータでしょうか?
    アプリはプライベートアプリでアクセス権は全て許可しています。
    APIのパラメータは掲示したソースで実行しました。

    >認可コードの有効期限切れてたりしませんか?
    >たしか10分だった気がします。

    念のため、アプリを再作成し、直後に実行してもメッセージに変わりはないので10分は経過していないと思われます。

    アバターyakumo

    typo はスペルミスとかのことです。
    ググって見てください。

    何かしら組み合わせを間違えているのだと思うので、
    一つひとつのパラメータに誤りが無いか確認していただくしか現状なさそうです。

    https://openid-foundation-japan.github.io/rfc6749.ja.html#token-errors

    今まで使えていたのと、自分自身はトークンの発行が出来ているため(厳密には refresh token でなので異なるかもしれませんが…)、全体的な障害とかでは無いのではと思っています。

    [復旧済み]認可エンドポイントで発生した障害について


    もしかするとタイミングによってはここらへんの影響もあるかもしれません。

    とりあえず、もうお確かめかもしれませんが。
    * 各種パラメータを再度一つ一つ確認して実行してみる。
    * PHP ではなく curl などシンプルなリクエストにして実行してみる
    などでエラーを特定していくのが良さそうです。

     

    アバターyakumo

    念の為ですが、エンドポイントの最後についている『&#8221』は実際にはついてないですよね?

    アバターsato takayoshi

    ご指摘ありがとうございます。

    >何かしら組み合わせを間違えているのだと思うので、
    >一つひとつのパラメータに誤りが無いか確認していただくしか現状なさそうです。

    もう一度確認してみます。

    『&#8221』ミスでエンドポイントのURLは以下になります。https://accounts.secure.freee.co.jp/public_api/token