簡體   English   中英

Laravel 5.1和名媛問題

[英]Laravel 5.1 and Socialite Questions

這不是關於我現在遇到的問題的帖子。 我正計划在我的應用程序中使用Laravel Socialite插件,我已經有一個使用Laravel內置的Auth系統的功能齊全的登錄/注冊系統,但是我想知道是否存在一種允許已擁有其帳戶的用戶的好方法我的應用程序可以將其社交資料鏈接到現有帳戶?

計划是他們可以使用其用戶名和密碼任何社交個人資料登錄。 到目前為止,我所做的所有研究都解釋了如何設置Socialite並利用該數據注冊/登錄新用戶,但是我找不到將兩者結合在一起的任何方法。

我不希望有人為我寫這篇文章,所以請不要對這篇文章感到困惑。

感謝您的任何信息,安迪

絕對。

我在一個站點上擁有FB和Twitter OAuth。 我這樣做的方法是在users表中添加oauth_facebook_idoauth_twitter_id列(以及avatar列,如果需要的話)。

我將路由設置為/auth/{provider}/auth/{provider}/callback ,因此以/auth/facebook/auth/facebook/callback為例。

在我handleProviderCallback($provider)對我的方法AuthController ,我搶返回用戶的詳細信息,並檢查他們是否已經在我的數據庫與電子郵件,Facebook的OAuth的ID或Twitter OAuth的ID存在。 如果它們存在,則設置其電子郵件,OAuth ID和其頭像,如果不存在,則創建它們。 然后我登錄。

    $user = Socialite::driver($provider)->user();

    $user_query = User::where('email', $user->email)
        ->orWhere('oauth_facebook_id', $user->id)
        ->orWhere('oauth_twitter_id', $user->id)
        ->get();

    if($user_query->count() > 0) {

        $the_user = $user_query->first();

        if($provider === 'facebook') {
            $the_user->oauth_facebook_id = $user->id;
        }

        if($provider === 'twitter') {
            $the_user->oauth_twitter_id = $user->id;
        }

        $the_user->avatar = $user->avatar;

        $the_user->save();

        \Auth::login($the_user, true);

        return redirect('/');
    }

    $new_user = User::create([
        'name' => $user->name,
        'email' => $user->email,
        'oauth_facebook_id' => $provider === 'facebook' ? $user->id : NULL,
        'oauth_twitter_id' => $provider === 'twitter' ? $user->id : NULL,
        'avatar' => $user->avatar
    ]);

    \Auth::login($new_user, true);

    return redirect('/');

希望這可以幫助您理解如何做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM