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

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

ただいまの
回答率

88.93%

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

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 895
退会済みユーザー

退会済みユーザー

//ユーザー情報まではデータが($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);

コード
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2019/07/25 17:16

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

    キャンセル

  • m.ts10806

    2019/07/25 17:21

    だから何?ではなくガイドラインがあるのですからそちらには沿いましょう。
    「推奨されていない質問」
    https://teratail.com/help/avoid-asking
    「質問するときのヒント」
    https://teratail.com/help/question-tips

    キャンセル

  • 退会済みユーザー

    2019/07/26 00:33

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 4

+3

$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 17:00

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

    キャンセル

+3

エンドポイントの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/25 17:06

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

    キャンセル

+2

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


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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/07/24 17:05

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

    キャンセル

  • 2019/07/24 18:58

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

    キャンセル

  • 2019/07/24 19:06

    ok.今度からそうします

    キャンセル

check解決した方法

-1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/07/25 18:38

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

    キャンセル

  • 2019/07/25 18:42

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

    キャンセル

  • 2019/07/25 18:46 編集

    追記してますので、読み違えないでもらえたらと。
    あくまで「開き直る」です。
    「初心者」であることは質問後だいぶ経ってから急に明かされたことです。

    技術的な初心者に向いてないわけではありません(ただ、コミュニケーション初心者には向いてません)

    「自分で調べます」はあとから追加されたんですね。
    ただ、結局はYahoo APIのドキュメントを読み込まないとなにも進まないのは変わりませんのでそこは忘れないようにしてください。

    キャンセル

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

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る