Log masuk sosial sosialit


Log Masuk Sosial Laravel
Pengenalan

Selain pengesahan berasaskan bentuk tipikal Di Luar Laravel Juga menyediakan cara yang mudah dan mudah untuk mengesahkan kepada pembekal OAuth menggunakan Laravel Socialite. Socialite kini menyokong pengesahan untuk Facebook, Twitter, LinkedIn, Google, GitHub, GitLab dan Bitbucket.

Pemandu untuk platform lain boleh didapati di laman web pemanduan komuniti

Socialite Providers

.

Meningkatkan Log Masuk Sosial

Apabila menaik taraf kepada versi utama baharu Socialite, pastikan anda menyemak dengan teliti Panduan Naik Taraf.

Pemasangan

ciri log masuk/log masuk sebelum anda Tambahkan pakej sosialit pada kebergantungan projek anda:

composer require laravel/socialite

Konfigurasi

Sebelum menggunakan Socialite, anda juga perlu menambah bukti kelayakan untuk perkhidmatan OAuth yang digunakan oleh aplikasi. Bukti kelayakan ini hendaklah diletakkan dalam fail konfigurasi config/services.php anda dan hendaklah digunakan dengan kekunci facebook, twitter, linkedin , google, github, gitlab atau bitbucket, bergantung pada pembekal yang diperlukan oleh aplikasi anda. Contohnya: config / services.php 配置文件中,并且应该使用密钥 facebooktwitterlinkedingooglegithubgitlabbitbucket, 取决于您的应用程序所需的提供商。 例如:

'github' => [ 
   'client_id' => env('GITHUB_CLIENT_ID'),    
   'client_secret' => env('GITHUB_CLIENT_SECRET'),    
   'redirect' => 'http://your-callback-url',
  ],

如果 redirect 项的值是个相对路径,它会自动解析为全称 URL 。

路由

接下来,就要对用户认证了!这需要两个路由:一个路由用于把用户重定向到 OAuth 提供器,另一个则用于在认证完成后接收相应提供器的回调请求。可以通过 facade 方式 Socialite:: 来访问 Socialite:

<?php
    namespace App\Http\Controllers\Auth;use Socialite;
    class LoginController extends Controller{   
     /**
     * Redirect the user to the GitHub authentication page.
     *
     * @return \Illuminate\Http\Response
     */    
     public function redirectToProvider()   
      {     
         return Socialite::driver('github')->redirect();  
       }   
    /**
     * Obtain the user information from GitHub.
     *
     * @return \Illuminate\Http\Response
     */    
    public function handleProviderCallback()  
      {      
        $user = Socialite::driver('github')->user();        
        // $user->token;    
      }
    }

redirect 方法负责将用户发送到 OAuth 提供程序,而 user 方法将读取传入请求并从提供程序检索用户的信息。

当然,还需要在你的控制器方法中定义好路由规则:

Route::get('login/github', 'Auth\LoginController@redirectToProvider');
Route::get('login/github/callback', 'Auth\LoginController@handleProviderCallback');

可选参数

许多 OAuth 提供程序支持重定向请求中的可选参数。 要在请求中包含任何可选参数,请使用关联数组调用 with 方法:

return Socialite::driver('google') 
   ->with(['hd' => 'example.com'])    
   ->redirect();

使用 with 方法时,注意不要传递任何保留的关键字,如 stateresponse_type

访问作用域

在重定向用户之前,您还可以使用 scopes 方法在请求中添加其他「作用域」。 此方法将所有现有范围与您提供的范围合并:

return Socialite::driver('github') 
   ->scopes(['read:user', 'public_repo'])    
   ->redirect();

您可以使用 setScopes 方法覆盖所有现有范围:

return Socialite::driver('github') 
   ->setScopes(['read:user', 'public_repo'])    
   ->redirect();

无认证状态

stateless

return Socialite::driver('google')->stateless()->user();

Jika nilai item redirect ialah laluan relatif, ia akan diselesaikan secara automatik ke URL penuh.

routing🎜🎜Seterusnya, tiba masanya untuk mengesahkan pengguna! Ini memerlukan dua laluan: satu untuk mengubah hala pengguna ke penyedia OAuth dan satu untuk menerima permintaan panggil balik daripada pembekal selepas pengesahan selesai. Socialite boleh diakses melalui kaedah fasad Socialite::: 🎜
$user = Socialite::driver('github')->user();
// OAuth2 Providers
$token = $user->token;
$refreshToken = $user->refreshToken; 
// not always provided
$expiresIn = $user->expiresIn;
// OAuth1 Providers
$token = $user->token;
$tokenSecret = $user->tokenSecret;
// 获取所有 Providers
$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();
🎜 Kaedah redirect bertanggungjawab untuk menghantar pengguna kepada pembekal OAuth, manakala user< /code> kaedah akan Membaca permintaan masuk dan mendapatkan semula maklumat pengguna daripada pembekal. 🎜🎜Sudah tentu, anda juga perlu menentukan peraturan penghalaan dalam kaedah pengawal anda: 🎜
$user = Socialite::driver('github')->userFromToken($token);
🎜🎜🎜
🎜🎜 Pilihan Parameter 🎜🎜Banyak penyedia OAuth menyokong parameter pilihan dalam permintaan ubah hala. Untuk memasukkan sebarang parameter pilihan dalam permintaan, panggil kaedah with dengan tatasusunan bersekutu: 🎜
$user = Socialite::driver('twitter')->userFromTokenAndSecret($token, $secret);
🎜Apabila menggunakan kaedah with, berhati-hati untuk tidak menghantar sebarang kunci tersimpan Perkataan, seperti state atau response_type. 🎜
🎜
🎜🎜
🎜🎜Akses skop🎜🎜Sebelum mengubah hala pengguna, anda juga boleh menggunakan < kaedah kod>skop menambah "skop" tambahan pada permintaan. Kaedah ini menggabungkan semua skop sedia ada dengan skop yang anda sediakan: 🎜rrreee🎜 Anda boleh menggunakan kaedah setScopes untuk mengatasi semua skop sedia ada: 🎜rrreee🎜🎜🎜 < div name="8d0b2d" data-unique="8d0b2d">🎜🎜Tiada keadaan pengesahan🎜🎜Kaedah stateless boleh digunakan untuk melumpuhkan pengesahan keadaan sesi. Ini sangat berguna apabila menambahkan pengesahan sosial pada API anda: 🎜rrreee🎜🎜🎜🎜🎜🎜

Dapatkan contoh pengguna

Sebaik sahaja anda mempunyai contoh pengguna, anda boleh mendapatkan lebih banyak butiran pengguna:

rrreee

Dapatkan butiran pengguna daripada token (OAuth2)

Jika anda sudah mempunyai token akses yang sah untuk pengguna , anda boleh mendapatkan semula butiran pengguna menggunakan kaedah userFromToken. userFromToken 方法检索用户的详细信息。

rrreee

从令牌和秘钥中检索用户详细信息 (OAuth1)

如果你已经有了一个有效的用户令牌 / 秘钥,你可以使用 userFromTokenAndSecretrrreee

Dapatkan butiran pengguna daripada token dan kunci (OAuth1)Jika anda sudah mempunyai token/kunci pengguna yang sah, Anda boleh mendapatkan butiran mereka menggunakan < code>userFromTokenAndSecret kaedah:
rrreee
Artikel ini mula-mula muncul di tapak web 🎜LearnKu.com🎜. 🎜🎜