'providers' => [// Laravel\Socialite\SocialiteServiceProvider::class, SocialiteProviders\Manager\ServiceProvider::class, // add],
'aliases' => [ 'Socialite' => Laravel\Socialite\Facades\Socialite::class, // add],
WEIBO_KEY=yourkeyfortheserviceWEIBO_SECRET=yoursecretfortheserviceWEIBO_REDIRECT_URI=http://192.168.1.7/laravel/public/auth/callback
Laravel5.1はサードパーティのログイン認証を実装しています(Weibo、QQ、WeChat、Doubanを含む)
はじめに
サードパーティのログイン認証は、ユーザーのログイン/登録操作を簡素化し、ユーザーのログイン/登録のしきい値を下げることができ、アプリケーションのユーザー コンバージョン率の向上に非常に役立ちます。
Socialite
Laravel は、OAuth (OAuth1 と OAuth2 の両方がサポートされています) 認証に Laravel Socialite を使用するためのシンプルで使いやすい方法を提供します。
Socialite は現在、Facebook、Twitter、Google、LinkedIn、GitHub、および Bitbucket の認証をサポートしています。 (まあ、半分は「存在しない」Webサイトです。)
Socialiteの使い方は公式ドキュメントで詳しく説明されているので、詳しくは説明しません。
英語が得意な学生は、Laravel の公式ドキュメントを直接読むことをお勧めします。結局のところ、受け売りの知識を読むのは危険です。
英語が苦手な学生(私と同じ)、ここに中国語のドキュメントがあります:
Laravel 5.0: http://laravel-china.org/docs/5.0/authentication#social-authentication
Laravel 5.1: http:// laravel.tw /docs/5.1/authentication#social-authentication
SocialiteProviders
SocialiteProviders は、Socialite のドライバーを拡張することで多くのサードパーティ認証を実装します。国内のものには、Weibo、QQ、WeChat、Douban などがあります。もちろん、Web サイトが OAuth をサポートしている限り、参照によって他のものを実装することもできます。
SocialiteProviders の使用も非常にシンプルで使いやすく、それぞれに対応するドキュメントがあります。実は英語がわからなくても理解できます。
ドキュメントのアドレス: http://socialiteproviders.github.io/
実際には、この記事はここで終わるはずです。 Laravel5.0ベースのドキュメントなので、引き続きLaravel5.1ベースでデモし、注意点などをお話しする予定です。
Weibo を例に挙げます
1.composer require socialiteproviders/weibo
2. Socialite プロバイダーを追加したことがある場合は、次のようにコメント化する必要があります:
file config/app.php 'providers' => [// Laravel\Socialite\SocialiteServiceProvider::class, SocialiteProviders\Manager\ServiceProvider::class, // add],
ログイン後にコピー
3. ファサード エイリアスを追加します。 'providers' => [// Laravel\Socialite\SocialiteServiceProvider::class, SocialiteProviders\Manager\ServiceProvider::class, // add],
Socialite のインストール時に以前に追加したことがある場合は、再度追加する必要はありません。
'aliases' => [ 'Socialite' => Laravel\Socialite\Facades\Socialite::class, // add],
ログイン後にコピー
4. イベントハンドラーの追加'aliases' => [ 'Socialite' => Laravel\Socialite\Facades\Socialite::class, // add],
ファイル app/Providers/EventServiceProvider.php
protected $listen = [ 'SocialiteProviders\Manager\SocialiteWasCalled' => [ 'SocialiteProviders\Weibo\WeiboExtendSocialite@handle', ],];
ちなみに、SocialiteProvidersの原理はこんな感じです。
SocialiteProvidersManagerServiceProvider は実際には LaravelSocialiteSocialiteServiceProvider から継承されています。これはそのソース コードです:
<?phpnamespace SocialiteProviders\Manager;use Illuminate\Contracts\Events\Dispatcher;use Laravel\Socialite\SocialiteServiceProvider;class ServiceProvider extends SocialiteServiceProvider{ /** * @param Dispatcher $event * @param SocialiteWasCalled $socialiteWasCalled */ public function boot(Dispatcher $event, SocialiteWasCalled $socialiteWasCalled) { $event->fire($socialiteWasCalled); }}
起動時に SocialiteWasCalled イベントをトリガーするだけです: SocialiteProvidersWeiboWeiboExtendSocialite @ハンドル。プロセッサのソース コード:
<?phpnamespace SocialiteProviders\Weibo;use SocialiteProviders\Manager\SocialiteWasCalled;class WeiboExtendSocialite{ public function handle(SocialiteWasCalled $socialiteWasCalled) { $socialiteWasCalled->extendSocialite('weibo', __NAMESPACE__.'\Provider'); }}
プロセッサが行うことは、Weibo ドライバーを Socialite に追加して、Weibo ドライバーを使用できるようにすることです。
5.ルートを追加しますファイル app/Http/routes.php
// 引导用户到新浪微博的登录授权页面Route::get('auth/weibo', 'Auth\AuthController@weibo');// 用户授权后新浪微博回调的页面Route::get('auth/callback', 'Auth\AuthController@callback');
ファイル config/services.php
'weibo' => [ 'client_id' => env('WEIBO_KEY'), 'client_secret' => env('WEIBO_SECRET'), 'redirect' => env('WEIBO_REDIRECT_URI'), ],
WEIBO_KEY=yourkeyfortheserviceWEIBO_SECRET=yoursecretfortheserviceWEIBO_REDIRECT_URI=http://192.168.1.7/laravel/public/auth/callback
ログイン後にコピー
WEIBO_KEY=yourkeyfortheserviceWEIBO_SECRET=yoursecretfortheserviceWEIBO_REDIRECT_URI=http://192.168.1.7/laravel/public/auth/callback
注: 192.168.1.7 は私のローカル仮想です機械仮想マシンが外部ネットワークに接続できるようになると、アドレスをテストできます。 QQ はテストのためにドメイン名にバインドする必要があるようです。
もちろん、config/services.php に設定の特定のパラメーターを直接記述することも可能ですが、これはお勧めできません。 config/services.php はコード ファイルに属し、.env は構成ファイルに属しているためです。コードがオンラインになると、コード ファイルを変更せずにオンライン環境の構成ファイルを適用するだけで済みます。これがベスト プラクティスと考えられます。
WEIBO_KEYとWEIBO_SECRETの具体的な値については、新浪微博から配布されていますので、新浪微博の認証コールバックページにWEIBO_REDIRECT_URIを記入してください。これらの詳細は、この記事の内容を超えています。http://open.weibo.com に直接アクセスして、Sina Weibo マニュアルを参照することをお勧めします。
7. コードの実装 ファイル app/Http/Controllers/Auth/AuthController.php
http://192.168.1.7/laravel/public/auth/weibo にアクセスすると、Sina Weibo のログイン認証ページにジャンプします。認証が成功すると、http://192.168.1.7/laravel/public/auth/callback にジャンプします返された結果:
public function weibo() { return \Socialite::with('weibo')->redirect(); // return \Socialite::with('weibo')->scopes(array('email'))->redirect(); } public function callback() { $oauthUser = \Socialite::with('weibo')->user(); var_dump($oauthUser->getId()); var_dump($oauthUser->getNickname()); var_dump($oauthUser->getName()); var_dump($oauthUser->getEmail()); var_dump($oauthUser->getAvatar()); }
string(10) "3221174302"string(11) "Mr_Jing1992"NULLNULLstring(50) "http://tp3.sinaimg.cn/3221174302/180/40064692810/1"
ログイン後にコピー もちろん、それはこれらの方法で必要なデータを取得できるかどうかはわかりません。たとえば、Sina のインターフェイスでは、ユーザーの電子メールを取得したい場合は、ユーザーを承認する必要があります。承認を取得した後、インターフェイスに電子メール アドレスの取得を要求して、ユーザーの電子メール アドレスを取得できます。
string(10) "3221174302"string(11) "Mr_Jing1992"NULLNULLstring(50) "http://tp3.sinaimg.cn/3221174302/180/40064692810/1"
詳細については、こちらをご覧ください:
http://open.weibo.com/wiki/Scopehttp://open.weibo.com/wiki/2/account/profile/email
サードパーティ ID を取得した後、この ID がウェブサイトのユーザー アカウントにバインドされている場合は、ウェブサイトのユーザー アカウントに直接ログインします。アカウントがバインドされていない場合、ユーザーは既存のアカウントをバインドするか、新しいアカウントを登録するように求められます。これらの特定のロジックについては詳しく説明しません。また、Sina に入力する必要がある 認証コールバック ページ の値があります。これは、ユーザーが認証ページで [キャンセル] ボタンをクリックしたときに Sina がコールバックするページです。これは、ログイン ページまたは Web サイトの他のページとして設定できます。
追加:
http://socialiteproviders.github.io/providers/qq/ ドキュメントに誤りがあります。
SocialiteProvidersQQQqExtendSocialite@handle を SocialiteProvidersQqQqExtendSocialite@handle に変更する必要があります。 大文字小文字に注意してください。
最後に:
間違いがあれば、修正してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
