今日のソーシャル時代では、ユーザーは従来の登録およびログイン方法に満足できなくなり、すでに登録されているソーシャル アカウントを使用して直接ログインすることを望んでいます。この需要を満たすために、多くの Web サイトがサードパーティのログイン アクセスを提供しています。 PHP では、OAuth プロトコルを介してサードパーティの承認されたログインを実装できます。以下でそれを見てみましょう。
OAuth プロトコルはオープン標準であり、主にユーザーのアカウント番号とパスワードを提供せずにサードパーティ プラットフォームへのアクセスを承認するために使用されます。 OAuth プロトコルを通じて、サードパーティのプラットフォームはユーザーに代わって他のプラットフォームにデータを要求し、異なるプラットフォーム間でのデータ共有を実現します。
PHP では、一般に OAuth 認証ログインを実装するための次の手順があります。
- サードパーティ プラットフォームの API キーとキー文字列を適用する
OAuth 認証ログインを実行する前に、サードパーティ プラットフォームで API キーとキー文字列を申請する必要があります。 Sina Weibo を例に挙げると、Sina Open Platform で API キーとキー文字列を申請する必要があります。アプリケーションが成功すると、次の情報を取得できます。
App Key: アプリケーションの一意の識別子
App Secret: アプリケーションの秘密キー
リダイレクト URI: に使用される URIコールバック。これは、Consistent を適用するときに入力する必要があります。
- OAuth クライアントの実装
PHP では、サードパーティの OAuth クライアントを使用して、承認されたログインを迅速に実装できます。関数。ここでは、Github を例として、サードパーティの OAuth クライアントの使用方法を紹介します。ここでは、PHP League の OAuth2 Client を使用して、Github 認証ログインを実装します。
まず、PHP リーグの OAuth2 クライアント ライブラリをプロジェクトにインストールする必要があります。これは、composer を使用してインストールできます。
composer require league/oauth2-client
インストールが完了したら、Github の OAuth クライアントをインスタンス化する必要があります。 code を入力し、前の手順で適用した API キーとキー文字列を渡します。
$provider = new LeagueOAuth2ClientProviderGithub([ 'clientId' => 'CLIENT_ID', 'clientSecret' => 'CLIENT_SECRET', 'redirectUri' => 'REDIRECT_URI', 'scopes' => ['user'], ]);
このうち、CLIENT_ID と CLIENT_SECRET は前の手順で適用した API キーとキー文字列で、REDIRECT_URI はコールバック URI です。
- 認証コードの取得
OAuth 認証ログインの前に、サードパーティ プラットフォームにリクエストを送信して認証コードを取得する必要があります。 Github を例に取ると、次のコードを使用してユーザーを Github 認証ページにリダイレクトできます:
// Step 1. Get authorization code $options = [ 'state' => 'OPTIONAL_CUSTOM_CONFIGURED_STATE', // ... ]; $authUrl = $provider->getAuthorizationUrl($options); // Store state so that the callback can verify the response $_SESSION['oauth2state'] = $provider->getState(); // Redirect the user to the authorization URL header('Location: '.$authUrl); exit;
Github 認証ページをリクエストするとき、$options 配列を渡して認可の範囲とその他の情報を指定します。 。 $_SESSION['oauth2state'] は、返された状態値を保存するために使用されます。
- アクセス トークンの取得
ユーザーがサードパーティ認証に合格した後、コールバック URI を通じてアクセス トークンを取得する必要があります。 Github を例に挙げると、次のコードを使用してアクセス トークンを取得できます。
// Step 2. Get an access token using the authorization code grant if (isset($_GET['code']) && isset($_GET['state'])) { if ($_GET['state'] !== $_SESSION['oauth2state']) { unset($_SESSION['oauth2state']); exit('State error'); } // Get an access token using the authorization code grant try { $token = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); // Optional: Store the token $_SESSION['access_token'] = $token->getToken(); } catch (LeagueOAuth2ClientProviderExceptionIdentityProviderException $e) { exit('Token error: '.$e->getMessage()); } header('Location: '.$_SERVER['PHP_SELF']); exit; }
アクセス トークンを取得した後、後で使用できるようにトークンを SESSION に保存できます。
- ユーザー情報の取得
アクセス トークンを取得した後、OAuth クライアントを通じてユーザー情報を取得できます。 Github を例に挙げると、次のコードを使用してユーザー情報を取得できます。
if (isset($_SESSION['access_token'])) { $token = new LeagueOAuth2ClientTokenAccessToken(['access_token' => $_SESSION['access_token']]); try { $user = $provider->getResourceOwner($token); echo 'Hello '.$user->getName(); } catch (LeagueOAuth2ClientProviderExceptionIdentityProviderException $e) { exit('Resource owner error: '.$e->getMessage()); } }
ユーザー情報を取得した後、登録、ログイン、パーソナライズ、その他の操作など、必要に応じて処理できます。
上記は、PHP でサードパーティ認証ログインを実装するための基本的なプロセスです。もちろん、実際のアプリケーションでは、CSRF 攻撃の防止、ユーザー データの同期など、多くのセキュリティおよびビジネス上の問題を考慮する必要があります。しかし、上記の基本的なプロセスを経ることで、OAuth 認証ログインについての理解がより深まると思います。
以上がサードパーティ認証を使用して PHP にログインするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

Dreamweaver Mac版
ビジュアル Web 開発ツール

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