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

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

新規登録して質問してみよう
ただいま回答率
85.48%
cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

PHP

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

Q&A

解決済

4回答

678閲覧

YahooID連携でのID取得が上手くいかない curl

退会済みユーザー

退会済みユーザー

総合スコア0

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

PHP

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

5グッド

0クリップ

投稿2019/07/24 05:43

//ユーザー情報まではデータが($json)出力できてることは確認できましたが、ID取得の処理後のprint_r($json);print_r($userInfo);で確認しようとしてもデータは出力されません。

やろうとしてること
TokenエンドポイントのURLにアクセストークンを付与して、ID(メアドと名前)を取得したい

// ユーザー情報 $access_token = $json->access_token; $refresh_token = $json->refresh_token; //ID取得 if (empty($access_token)) { return null; } $url2 = 'https://auth.login.yahoo.co.jp/yconnect/v2/token&' . 'access_token=' . $access_token; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url2); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 60); $json = curl_exec($ch); curl_close($ch); $userInfo = json_decode($json, true); if (empty($userInfo)) { return null; } $useremail = $userInfo["email"]; print_r($json); print_r($userInfo); コード
awtd, keikotanaka, guyvbj, yamadayuko, matusimatusima👍を押しています

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

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

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

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

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

m.ts10806

2019/07/24 05:49

$json = curl_exec($ch); ↑この結果はどうなってますか? json_decode() の第1引数が正しいJSONじゃなくなってemptyチェックでreturn nullしてるように見えますが。
退会済みユーザー

退会済みユーザー

2019/07/24 07:45 編集

$json = curl_exec($ch);はprint_r($json)で出すと、ヤフー画面でシステム障害が発生しましたとなります。 execの前で確認するとjsonにトークンが入っているのが確認できるので、それ以降が問題なんだと思ってます。 emptyは中身がない場合return null するようにしてるので、中身があるため関係ないと思ったんですが。 if return null 外してやってみましたが、やはり同じヤフー画面のシステム障害ですエラーとなるだけでした。
退会済みユーザー

退会済みユーザー

2019/07/25 08:16

複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました。だからなに?答えを聞きたいだけなことは当たり前だと思うんですけど。
guest

回答4

0

ベストアンサー

もういいです。このサイトには期待する回答は得られませんでした。

投稿2019/07/25 08:13

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

m.ts10806

2019/07/25 08:22

それを「回答」として投稿するのは間違っています。
退会済みユーザー

退会済みユーザー

2019/07/25 08:33 編集

だからもういいです。自分で調べます。
m.ts10806

2019/07/25 08:34

むしろ質問者さんが回答を理解していない(ドキュメントをきちんと読めていない)という印象しかありませんよ。 「分かりません」→理解していないだけ 「~ってわかりますか」→ドキュメント読んでないだけ これでは解決しません。
退会済みユーザー

退会済みユーザー

2019/07/25 08:35

読んでわからないから聞いてみたんですけど。
m.ts10806

2019/07/25 08:38 編集

サポートセンターと勘違いされてるようですが、 完全に他人しかいません。 読んだことすらこの流れでは分かりません。 どこがどう分からないのか書かないと誰にも分かりません。 「分からない」だけでは何も解決しません。 解決したいなら回答やドキュメントを理解するように努力してください。 でないと、どこで聞いても同じです。 自分でやる気がないならお金払って業者にやってもらってください。
退会済みユーザー

退会済みユーザー

2019/07/25 09:02 編集

本末転倒ですね。何のための質問サイトですか。あなたのような方がいるから、質問したいこともできないのです。
m.ts10806

2019/07/25 09:07

何が本末転倒なのか理解に苦しみますが、 既に出ている回答でヒントは出そろっており きちんと検証していけば解決可能としか私には思えません。 でもそれは真っ当な理解力あっての話です。
m.ts10806

2019/07/25 09:10 編集

指摘をきちんと受け入れられない、アドバイスも今一つ理解しないのでしたら質問しなくて良いと思います。 お金払って業者にやってもらってください。それがなにより確実で早く解決できる方法です。 他人の時間を使うことを選んだということがどういうことかは一考されたし。 (これで分からないなら平行線なので私はここでやめておきます)
退会済みユーザー

退会済みユーザー

2019/07/25 09:12

ええ。初心者の私には理解できません。
m.ts10806

2019/07/25 09:20 編集

業者を勧める理由: アクセストークンを渡せるのでそのままやってもらえる。 自分からは要件を伝えるだけで何もしなくていい。 質問サイトを勧めない理由: アクセストークンを公開できないし他人なのでヒントまでが限界。 APIドキュメントに沿っているか確認してそこを指摘するまで。 あとは自分でやるしかない。 つまり、 今回のような内容と初心者(と開き直るような)状態では質問サイトには合っていません。 ※だからといって「期待する回答は得られませんでした。」と回答に投稿するのは間違っています。 解決可能な情報がそろっているのに誰の参考にもならないから とはいえ、サイト内に投稿されたYahoo APIに関する質問 https://teratail.com/search?q=Yahoo+API+tag%3APHP から何も得られないとは思えませんけど。
hentaiman

2019/07/25 09:38

> だからもういいです。自分で調べます。 それがいい、普通はみんなそうしてるからね。独力で対応出来るならその方が良いに決まってるさ 一応回答には目を通しているようだし、改めてAPI仕様読めばもうちょっとマシな理解出来ると思うよ
退会済みユーザー

退会済みユーザー

2019/07/25 09:42

すみませんこんなの渡されてもよく分かりません。私はPOSTメソッドをどのようにphpに記述するかAuthorizationヘッダの指定が分からないのです。どこにどうやって記述するかがわからないんですよ。少なくとも初心者の私はそこが聞きたいのです。他にも回答いただいてますが、初心者には向いていないのですね。残念ですが私には役に立ちませんでしたのでここから去ります。ありがとうございました。
m.ts10806

2019/07/25 09:48 編集

追記してますので、読み違えないでもらえたらと。 あくまで「開き直る」です。 「初心者」であることは質問後だいぶ経ってから急に明かされたことです。 技術的な初心者に向いてないわけではありません(ただ、コミュニケーション初心者には向いてません) 「自分で調べます」はあとから追加されたんですね。 ただ、結局はYahoo APIのドキュメントを読み込まないとなにも進まないのは変わりませんのでそこは忘れないようにしてください。
guest

0

エンドポイントのURLが「https://auth.login.yahoo.co.jp/yconnect/v2/token」と書いてあって、
サポートするメソッドがPOSTだけなのにURLの後に何か記述している時点で正常に動作しないと思います。

Authorizationヘッダが必須と書いてあるのについている様子もないですし……
パラメータをPOSTで投げている様子もないですし……

そのあたりをクリアにしてから再度書き込んでみてはいかがでしょうか。

必須パラメータについては、下記に書いてありますよ。
https://developer.yahoo.co.jp/yconnect/v2/authorization_code/token.html

投稿2019/07/24 11:15

編集2019/07/24 11:16
takepan1973

総合スコア821

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

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

退会済みユーザー

退会済みユーザー

2019/07/25 08:06

そのPOSTの投げ方がわからないのです。笑。
guest

0

$url2 = 'https://auth.login.yahoo.co.jp/yconnect/v2/token&' . 'access_token=' . $access_token;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
$json = curl_exec($ch);
curl_close($ch);

上記のプログラムだと Tokenエンドポイント の呼び出し方が間違っていると思う(POST ではない。必須パラメータが不足している。)ので、 curl_exec の結果は、呼び出し失敗で、 $json には、false が、入っていないでしょうか?

curl_exec 参照。

返り値
しかし、オプション CURLOPT_RETURNTRANSFER が設定されていると、 成功した場合に取得結果、失敗した場合に FALSE を返します。

あと、Tokenエンドポイント のドキュメントを読んだ感じでは、レスポンスに email は、返ってこないと思うのですが、どこかに email が返ってくると書かれていたのでしょうか?

投稿2019/07/24 06:10

編集2019/07/24 06:13
CHERRY

総合スコア25171

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

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

退会済みユーザー

退会済みユーザー

2019/07/24 08:00

//必須パラメータが不足している。 その必須パラメータってなにかわかりますか。 //curl_exec の結果は、呼び出し失敗で、 $json には、false が、入っていないでしょうか? これはすいませんよくわかりません。 //どこかに email が返ってくると書かれていたのでしょうか? 別フォームにscopeでemailを指定しています。
guest

0

サポートするHTTPメソッド: POST

だそうなのでCURLOPT_POSTをつけてみてはどうでしょう?

それと最後で何も表示されないのはその手前のreturn null;でお帰りになられているだけではなかろうか

投稿2019/07/24 05:55

hentaiman

総合スコア6415

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

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

退会済みユーザー

退会済みユーザー

2019/07/24 08:05

if return null 外してやってみましたが、やはり同じヤフー画面のシステム障害ですエラーとなるだけでした。
hentaiman

2019/07/24 09:58

同じエラー画面って、それは質問文に書いといてくれた方が良かったな エラーは特に無く何も表示されてないっていう意味かと思ったのでこういう回答になった
退会済みユーザー

退会済みユーザー

2019/07/24 10:06

ok.今度からそうします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問