

現在、FuelPHP 1.8 にてTwitter認証の仕組みを作っています。

ドキュメントに従い、Controllerで \Auth_Opauth::forge() を実行すると直接 Callback URL に飛んで行くようです。

環境は、  
エックスサーバー  
PHP 7.0.3  
FuelPHP 1.8

opauthのインストールは Composer を使っています。

[code]

    "opauth/opauth": "0.4.*",
    "opauth/twitter": "dev-master",
    "opauth/facebook": "dev-master"
    
[/code]

Controller のコードは下記のとおりです。

[code]

    class Controller_Oauth extends Controller
    {
      public function action_login($provider = null)
      {
        if ($provider === null)
        {
          \Messages::error('login-no-provider-specified');
          \Response::redirect_back();
        }
    
        \Auth_Opauth::forge();
      }
    
      public function action_facebook()
      {
        //
      }
    
      public function action_callback()
      {
        $opauth = \Auth_Opauth::forge(false);
      }
    }
    
[/code]

Strategy の設定は  
/path/to/app/config/opauth.php

[code]

    'Twitter' => array(
      'key' => 'gFEQjKSP3apYH6X83JPdFtej7',
      'secret' => ' kzcjoSCrgtPifMqyt7Pkw2tIReKY0gSCP6fnOpJnTe3prQpzxL'
    ),
    
[/code]

callback アクションで var_dump($opauth) すると、opauthの設定がオブジェクトとして返ってきます。

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


CC BY-SA 3.0
2016-03-04T00:43:51.143
22777
2018-05-21T07:49:52.840
14643
question
php twitter oauth fuelphp
FuelPHPでopauth/twitterを実行するとTwitterの認証画面に遷移しない


同様の問題でどっぷりハマり解決したので共有します。  
fuel/vendor/opauth/twitter/Vendor/tmhOAuth/tmhOAuth.php  
の最終行付近で

[code]

    \Log::debug(__METHOD__.' '.__LINE__.' $this->response =  '.print_r($this->response, TRUE));
    
[/code]

してresponse内容を確認すると

[code]

    [error] => SSL: CA certificate set, but certificate verification is disabled
    [errno] => 35
    
[/code]

と出ているのではないかと思います。  
下記に記しているのは、このエラーを解決した内容です。  
おそらくcurlのSSLがOpenSSLではなく、SecureTransport ではないかと思います。

[code]

    $ php -i | grep "SSL Version"
    SSL Version => SecureTransport
    
[/code]

と出ていたらその通りで、これをOpenSSLに変更します。

自分の場合はMacなので、brewで別途curlをインストール

[code]

    $ brew install --with-openssl curl
    〜中略〜
        LDFLAGS:  -L/usr/local/opt/curl/lib
        CPPFLAGS: -I/usr/local/opt/curl/include
    
[/code]

これを使って curl.so をソースからコンパイルし直す  
<https://www.php.net/releases/> より 自身のPHPのバージョンと同じソースをダウンロード

[code]

    $ cd /usr/local/src
    $ tar xjvf php-x.x.xx.tar.bz2
    $ cd /usr/local/src/php-x.x.x/ext/curl
    $ phpize
    (先ほどbrew経由で出たLDFLAGSやCPPFLAGSの値を入れてconfigure)
    $ ./configure LDFLAGS="-L/usr/local/opt/curl/lib" CPPFLAGS="-I/usr/local/opt/curl/include"
    $ make
    $ make test
    $ sudo make install
    $ sudo apachectl restart
    
[/code]

再びcurlのSSL確認

[code]

    $ php -i | grep "SSL Version"
    SSL Version => OpenSSL/x.x.x
    
[/code]

この後OpauthでTwitterが通るようになりました。


CC BY-SA 3.0
2016-03-11T04:16:45.197
23015
2016-03-11T04:37:09.420
2023-11-17T20:01:02.963
-1
14737
22777
answer