Q&A
前提
Laravel8
socialite 5.5
PHP 8.0.8
socialiteproviders .4.1
Laravel8にsocialiteでログイン機能実装したく、実装しているのですが、エラーが発生して実装がなく、
原因もわからずでして、お教えいただきたいです。
参考にしたページ:https://qiita.com/backstreet/items/90f67114d39065ca907c
リダイレクトして、twitterであればTwitterの承認画面が表示されて、
承認した後に、コールバックが返ってきてLaravel側に戻ってきた際に、エラーになります。
発生している問題・エラーメッセージ
LoginController.phpで$sns_user = Socialite::driver($provider)->user();の箇所で
エラーが発生しております。エラー文章が下記になります。
LoginController.php
1Indirect modification of overloaded property SocialiteProviders\Manager\OAuth1\User::$urls has no effect
LoginController.php
1<?php 2namespace App\Http\Controllers\Auth; 3namespace App\Http\Controllers\frontend; 4 5use App\Http\Controllers\Controller; 6use Illuminate\Http\Request; 7use App\Models\Member; 8use Laravel\Socialite\Facades\Socialite; 9use Illuminate\Support\Facades\Hash; 10use Illuminate\Support\Str; 11 12class LoginController extends Controller 13{ 14 15 public function redirectToProvider(Request $request) 16 { 17 $provider = $request->provider; 18 return Socialite::driver($provider)->redirect(); 19 } 20 21 public function handleProviderCallback(Request $request, $provider) 22 { 23 $provider = $request->provider; 24 $sns_user = Socialite::driver($provider)->user(); //エラー箇所 25 $sns_email = $sns_user->getEmail(); 26 $sns_name = $sns_user->getName(); 27 28 if (!is_null($sns_email)) { 29 $user = Member::firstOrCreate( 30 ['email' => $sns_email], 31 [ 32 'email' => $sns_email, 'name' => $sns_name, 'password' => Hash::make(Str::random()) 33 ] 34 ); 35 auth()->login($user); 36 session()->flash('oauth_login', $provider . 'でログインしました。'); 37 return redirect('/'); 38 } 39 return '取得不可'; 40 } 41} 42
Route::view('/login', 'frontend.login.index')->name('frontend.login.index'); Route::prefix('login/{provider}')->where(['provider' => '(twitter|facebook|google|github)'])->group(function () { Route::get('/', [App\Http\Controllers\frontend\LoginController::class, 'redirectToProvider'])->name('sns_login.redirect'); Route::get('/callback', [App\Http\Controllers\frontend\LoginController::class, 'handleProviderCallback'])->name('sns_login.callback'); });
補足情報
app.phpのprovidersに「SocialiteProviders\Manager\ServiceProvider::class,」
aliasesに「'Socialite' => Laravel\Socialite\Facades\Socialite::class,」
は追加しております。
回答1件
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2023/01/03 13:00