

## 現在の問題

Twitter APIを利用してTwitterアカウントでログインを出来るようにしたいと考えております。  
現在発生している問題はTwitterの認証画面が表示され、認証を許可するところまでは良いのですが、自作サイトに移動するとログインが出来ていないというのが問題になっております。

DBも確認してみましたが、登録がされていない状態でしたので、登録の処理が出来ていないので、ログインが出来ていないと考えており、スペルミス等を可能な限り確認しましたが、まだ原因はわかっておりません。

どの部分を重点的に確認すれば良いかなどアドバイスをいただけると幸いです。

以下のサイトを参考に作成しました。

[laravel Auth Twitter 連携 -
Qiita](https://qiita.com/ma7ma7pipipi/items/5cd58f0966ab1bc44a31#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E4%BD%9C%E6%88%90)

# 現環境

  * さくらサーバー
  * PHP:7.4.7
  * MySQL:5.7
  * Laravel:5.8
  * socialite:4.0

* * *

**app/Http/Controllers/Auth/OAuthLoginController.php**

[code]

    <?php
    
    namespace App\Http\Controllers\Auth;
    
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Auth;
    use App\Http\Controllers\Controller;
    use App\Models\User;
    use App\Models\Social;
    use Socialite;
    
    class OAuthLoginController extends Controller
    {
    public function getTwitterAuth()
    {
        return Socialite::driver('twitter')->redirect();
    }
    
    public function authTwitterCallback()
    {
      $data = Socialite::driver('twitter')->user();
    
      $res = Social::query()
          ->where('id',$data->id)
          ->get();
    
      if(!empty($res[0]->user->id)){
          //ログインしている場合
          Auth::login($res[0]->user);
          return redirect('/')->with('status', 'ログインしました');
      } else {
          //まだログインしたことない場合 情報をセッションに保存し新規会員登録へ
          session(['twitter' => $data]);
          return redirect('register')->with('status', 'Twitter連携しました');
      }
     }
    }
    
[/code]

**app/Http/Controllers/Auth/RegisterController.php**

[code]

    <?php
    
    namespace App\Http\Controllers\Auth;
    
    use App\Models\User;
    use App\Models\Social;
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Hash;
    use Illuminate\Support\Facades\Validator;
    use Illuminate\Foundation\Auth\RegistersUsers;
    
    class RegisterController extends Controller
    {
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */
    
    use RegistersUsers;
    
    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = '/shares';
    
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }
    
    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            // 追加
            'screen_name' => ['required', 'string', 'max:255', 'unique:users'],
            'name'        => ['required', 'string', 'max:255'],
            'email'       => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password'    => ['required', 'string', 'min:8', 'confirmed'],
        ]);
    }
    
    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\Models\User
     */
    protected function create(array $data)
    {
        return User::create([
            // 追加
            'screen_name' => $data['screen_name'],
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    
        if(session('twitter')){
    
            $social = session('twitter');
    
            Social::create([
                'id' => $social->id,
                'user_id' => $res->id,
                'name' => $social->name,
                'screen_name' => $social->nickname,
                'verified' => $social->user['verified'],
                'token' => $social->token,
                'token_secret' => $social->tokenSecret,
                'img' => $social->avatar,
                'profile_banner_url' => $social->user['profile_banner_url'],
                'profile_image_url_https' => $social->user['profile_image_url_https'],
                'expired' => 0
            ]);
    
            session()->forget('twitter');
        }
    
        return $res;
     }
    }
    
[/code]


CC BY-SA 4.0
2020-09-22T07:18:56.500
70601
2020-09-23T07:23:59.077
2020-09-23T07:23:59.077
41995
41995
question
laravel twitter laravel-5
Twitter APIを利用したソーシャルログインで認証許可後にログインが行えていない