LaravelでFacebookやTwitter、Google+などのアカウントを使ってログインするソーシャルログインを実装しようしました。
Laravelには、すでに先人がSocialiteというプラグインを作ってくれているので、これを使うことにしました。
Socialiteをインストールしようと、composer updateコマンドの途中でエラーが出て、ハマったので回避方法をメモしました。
目次
composer updateでfailed to open stream: No such file or directory autoload_real.php
私の開発環境では、長い間、composer updateしていなかったので、各パッケージが古い可能性があります。
そこで、まず、最初に、Laravelのホームディレクトリで composer update コマンドを実行してみました。
古いパッケージがどんどんアップデートされるのですが、途中でエラーになってしまいました。
[UnexpectedValueException]RecursiveDirectoryIterator::_construct
failed to open stream: No such file or directory in xxx\vendor\composer\autoload_real.php on line 54
Fatal error: require(): Failed opening required 'xxxx\vendor\laravel-ja\compja5\helper.php'
うーん。。。
ちょっとどうしようもなくなったので、composerを再インストールすることにしました。
再インストールするには、
vendorフォルダと、composer.lockファイルを削除して、composer installします。
1 2 3 |
# mv vendor vendor-orig # mv composer.lock composer.lock-orig # composer install |
これで、無事にcomposerがインストール出来ました。
Class 'Laravel\Socialite\SocialiteServiceProvider' not found
これでやっとSocialiteをインストールすることが可能になります。
composer.jsonを編集して以下を追加します。
1 2 3 4 |
"require": { "laravel/framework": "~5.0", "laravel/socialite": "~2.0" // ここを追加 }, |
次に、config/app.phpを編集して以下を追加します。
1 2 3 4 5 6 7 8 9 10 |
return [ 'providers' => [ 'Laravel\Socialite\SocialiteServiceProvider', // ここを追加 ], 'aliases' => [ 'Socialite' => 'Laravel\Socialite\Facades\Socialite', // ここを追加 ], ]; |
この後、composer updateします。
また、エラー。。。
[RuntimeException] Error Output:[Symfony\Component\Debug\Exception\FatalErrorException] Class 'Laravel\Socialite\SocialiteServiceProvider' not found
困った。。。????????
いろいろ調べてみて原因がわかりました。
composer.jsonにsocialiteを追加して、そのまま、何もせずに直後に、config/app.phpにSocialiteServiceProviderを追加するのがよくないようです。
こうしてしまうと、socialiteがインストールされていないにも関わらず、SocialiteServiceProviderを探しにいって見つからないからエラーになるようです。
よって、config/app.phpに追加した変更を削除してから、composer updateします。
これで、socialiteがインストールされたので、config/app.phpに、先ほど削除した行を戻しておきます。
今からようやくソーシャルログインの実装が出来ます。
最後まで読んでいただきありがとうござました。
この記事が気に入っていただけたらシェアしてくれると嬉しいです。
コメント