質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
JWT(JSON Web Token)

JWT(JSON Web Token)とは、JSONをベースとしたアクセストークンの仕様。電子署名付きのURL safeなJSONのことを指します。電子署名が付いているため、改ざんをチェックできる点がメリットです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

0回答

1062閲覧

Sign in with Apple PHP id_token(JSON)取得失敗の原因について

mfqbh189jp

総合スコア8

JWT(JSON Web Token)

JWT(JSON Web Token)とは、JSONをベースとしたアクセストークンの仕様。電子署名付きのURL safeなJSONのことを指します。電子署名が付いているため、改ざんをチェックできる点がメリットです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/12/23 09:17

編集2020/12/24 05:00

Sign in with AppleでのiOSアプリとサーバーとの連携で
サーバー側のAPIをPHPで作成しているのですが、id_tokenの取得に失敗します…
原因の特定のやり方、もしくは何か原因が分かる方がいらっしゃれば、ご教授頂けないでしょうか。

具体的には、
client_secret(JWT)作成後、
以下のデータを「https://appleid.apple.com/auth/token」にPOSTしているのですが、
「{"error":"invalid_request"}」が返却されて取得に失敗します。

▼POSTしているデータ
$params = array(
'client_id' => APPLE_CLIENT_ID,
'client_secret' => $jwt,
'code' => $request['authorizationCode'],
'grant_type' => 'authorization_code',
'redirect_uri' => ""
);

client_secret(JWT)に関しては、
https://jwt.io/」のサイトで確認する限り、中身に問題は無さそうでした。

「authorization_code($code)」に関しては、
転載して良いか分からないのですが、
https://miku3.net/appleid/」を利用させていただいております。
ログイン後に表示される「code」(5分以内)をパラメータに利用しております。

あとは以下ソースでPOSTを行っておりますが、
「{"error":"invalid_request"}」が返却される状態です。

$data = http_build_query($params); $header = array( "Content-Type: application/x-www-form-urlencoded", "Content-Length: ".strlen($data), "User-Agent: UA" ); $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_URL, 'https://appleid.Apple.com/auth/token'); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_TIMEOUT, 5); $result = curl_exec($curl);

よく理解できていない「authorization_code($code)」が怪しい気がするのですが…
原因の特定ができない状態で困っております。

原因の特定のやり方、もしくは何か原因が分かる方がいらっしゃれば、ご教授頂けないでしょうか。

よろしくお願いいたします。

追記:
誤:{"error":"invalid_grant"}
正:{"error":"invalid_request"}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問