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

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

ただいまの
回答率

90.49%

  • PHP

    20787questions

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

php oauth2-clientでgetAccessTokenの際にSSL_VERIFYをfalseにしたい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 923

tera1

score 72

いつもお世話になっております。

oauthを実装しているところですが、
以下のGithubのoauthライブラリを使用しています。
https://github.com/thephpleague/oauth2-client

こちらのREADME.mdにある以下のgetAccessTokenにて、

$accessToken = $provider->getAccessToken('authorization_code', [
            'code' => $_GET['code']
        ]);


内部的にcurl_execされるのですが、

その際に、開発環境につき、

CURLOPT_SSL_VERIFYHOST = false
CURLOPT_SSL_VERIFYPEER = false

を設定したいです。

CurlFactory.php 317行目で
$option['verify']という値がfalseでくれば
設定できるのですが、それを渡す方法がわかりません。

ためしに以下のコードをやってみましたが有効になりませんでした。

$accessToken = $provider->getAccessToken('authorization_code', [
            'code' => $_GET['code'],
,'curl' => array('verify'=>false),
        ]);

お手数をおかけしますがなにとぞよろしくお願いいたします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+1

オプションを指定するタイミングはgetAccessTokenではなくて
Providerインスタンスの生成時のようです。

oauth2-client/README.md

$provider = new \League\OAuth2\Client\Provider\GenericProvider([
    'clientId'                => 'XXXXXX',    // The client ID assigned to you by the provider
    'clientSecret'            => 'XXXXXX',    // The client password assigned to you by the provider
    'redirectUri'             => 'http://my.example.com/your-redirect-url/',
    'urlAuthorize'            => 'http://service.example.com/authorize',
    'urlAccessToken'          => 'http://service.example.com/token',
    'urlResourceOwnerDetails' => 'http://service.example.com/resource',
    'proxy'                   => '192.168.0.1:8888',
    'verify'                  => false
]);

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/05/24 13:47

    ありがとうございます!!
    なるほど!プロバイダーでしたか!勉強になりました!

    ちなみに、proxyの指定が無いと、verifyが有効にならないと思います。

    proxyサーバーは使っていないので、可能であれば指定したくありません。。

    ここでのproxyの意味が、よくわかっていませんが、
    oauth後のコールバックURLと同じであれば、
    決め打ちは可能ですが。。

    ライブラリがproxyが存在したらverifyみるということなので、
    そのようにしないとですかね。。

    一旦、プロキシで受け取ってverify検証しないようにして、
    大元に返すイメージなのか。。勝手な推察でした。

    proxy無しでいける方法ございましたら
    教えて頂ければ幸いです!

    何度もお手数をお掛けして申し訳ございません。




    キャンセル

  • 2016/05/24 21:17 編集

    処理の流れを確認しました。なるほど、getAllowedClientOptionsで
    はじかれてしまうんですね。

    プロバイダーのコンストラクタを改めて見てみると、第二引数で使用クライアントを
    注入できる作りになっているように思えました。

    https://github.com/thephpleague/oauth2-client/blob/f145fded7d61a5388e76ed720c5dce185c1d36fe/src/Provider/AbstractProvider.php#L108


    確認のためissuesで何かverifyに関するやりとがされていないか検索をしたところ
    以下のやりとりがありました(ありがとうGoogle翻訳)
    https://github.com/thephpleague/oauth2-client/issues/467

    クライアントに変更を加えたい場合、第二引数で渡すという理解で合っているようです。
    $httpClient = 自分で生成したHttpClient(Guzzleインスタンス)
    $collaborators = ['httpClient' => $httpClient];
    $provider = new GenericProvider($options, $collaborators);

    キャンセル

  • 2016/05/24 21:44

    なるほど!!
    重ねてありがとうございます!
    非常に勉強になります!
    おかげ様で解決できました_(_ _)_

    キャンセル

関連した質問

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

  • PHP

    20787questions

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