インターネットの急速な発展に伴い、サードパーティのログインはオンライン生活に不可欠な部分になりました。サードパーティ ログインは、より便利、高速、安全なログイン方法をユーザーに提供し、従来の登録ログイン方法よりも人気があります。現在、市場に出回っているサードパーティ ログインには、主に QQ、WeChat、Weibo などの大規模なソーシャル プラットフォームが含まれています。サードパーティのログイン機能を迅速に実装するにはどうすればよいですか?この記事では、Beego と OAuth2 を使用してサードパーティのログイン機能を実装する方法を紹介します。
1. Beego の概要
Beego は、オープンソースの高速 Go プログラミング フレームワークです。柔軟性と拡張性が高く、多数のツールとライブラリを提供します。 Beego は、開発者が Web アプリケーションを迅速に構築できるように支援し、自動ルート管理、テンプレート システム、静的ファイルの提供などの重要な機能を提供します。
2. OAuth2 プロトコルの概要
OAuth2 は、パスワードやその他の機密情報を第三者に共有することなく、ユーザーが自分に代わって動作するように他のアプリケーションを承認できるようにする承認フレームワーク プロトコルです。 - パーティーサービス。このプロトコルは、リソース所有者、リソース サーバー、クライアント、認証サーバーの 4 つの役割を定義します。このうち、リソース所有者はアクセス権を持つユーザーを指し、リソースサーバーは情報リソースをホストするサーバーを指し、クライアントは保護されたリソースへのアクセスを要求するソフトウェアプログラムを指し、認証サーバーはクライアントの認証を指します。 ID と、保護されたリソースやサービスへのアクセスの承認。
3. Beego と OAuth2 を使用してサードパーティ ログインを実装する
まず、ローカル用の Beego プロジェクトを作成する必要があります。開発とテスト。次のコマンドを使用します (最初に Beego をインストールする必要があります):
bee new thirdpartylogin
github などの必要なライブラリをいくつかインストールする必要があります。 com/astaxie /beego
および github.com/astaxie/beego/orm
は、次のコマンドを使用してインストールできます:
go get github.com/astaxie/beego go get github.com/astaxie/beego/orm
us ユーザー情報とサードパーティのログイン情報を保存するデータベースを作成する必要があります。 MySQL または PostgreSQL データベースを使用できます。この記事では、MySQL データベースを使用します。ユーザー テーブルとサードパーティ ログイン テーブルを作成する SQL ステートメントは次のとおりです。
CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(64) NOT NULL, `password` varchar(128) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `oauth` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) unsigned NOT NULL, `provider` varchar(64) NOT NULL, `provider_user_id` varchar(64) NOT NULL, `access_token` varchar(128) NOT NULL, `refresh_token` varchar(128) NOT NULL, `expire_at` int(11) unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
サードパーティ ログインを使用する必要があります。認証用。現在、QQ、WeChat、Weibo などの大規模なソーシャル プラットフォームを含む、さまざまなサードパーティのログイン方法が市場に出回っています。 QQ ログインを例にして説明します。
まず、QQ インターネット オープン プラットフォーム (https://connect.qq.com/) にアプリケーションを登録して、App ID
と App Key## を取得する必要があります。 #。次に、次のコードを Beego プロジェクトに追加してユーザーの承認を取得する必要があります。
func QQLogin(c *beego.Controller) { var state = c.GetString("state") var oauth = conf.GetQQOAuthConfig(state) authURL := oauth.AuthCodeURL(state) c.Redirect(http.StatusTemporaryRedirect, authURL) }上記のコードでは、
state パラメーターを使用してユーザー リクエスト
を識別します。 oauth オブジェクト QQ ログインに必要な構成情報が含まれています。
AuthCodeURL メソッドを使用して認証アドレスを生成し、ユーザーを認証ページにリダイレクトします。
func QQLoginCallback(c *beego.Controller) { var state = c.GetString("state") var code = c.GetString("code") var oauth = conf.GetQQOAuthConfig(state) token, err := oauth.Exchange(context.TODO(), code) if err != nil { log.Println(err) c.Abort("500") } data, err := fetchQQUserInfo(token.AccessToken) if err != nil { log.Println(err) c.Abort("500") } openid := data.GetString("openid") if openid == "" { log.Println("openid is blank") c.Abort("500") } account := models.GetAccountByProvider("qq", openid) if account != nil { _ = models.UpdateAccountAccessToken(account, token.AccessToken) c.Redirect(http.StatusTemporaryRedirect, "/") } else { err := models.CreateAccount("qq", openid, token.AccessToken) if err != nil { log.Println(err) c.Abort("500") } c.Redirect(http.StatusTemporaryRedirect, "/") } }上記のコードでは、
Exchange メソッドを使用します。アクセス トークンを取得するには、
fetchQQUserInfo メソッドを使用して QQ ユーザー情報を取得します。
openid は、QQ ユーザーを一意に識別するために使用されます。次に、QQ ユーザー レコードがデータベースに存在するかどうかを確認し、存在する場合はアクセス トークンを更新し、存在しない場合は新しいアカウント レコードを作成します。
func AuthRequired(handler http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { sess, err := store.Get(r, "session") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if _, ok := sess.Values["user_id"]; !ok { w.Header().Set("Location", "/login") w.WriteHeader(http.StatusSeeOther) return } handler.ServeHTTP(w, r) }) }上記のコードでは、ユーザー ID がセッションに存在するかどうかを確認し、存在しない場合はログイン ページにリダイレクトし、存在しない場合はリクエストの処理を続行します。 4. 概要この記事では、Beego と OAuth2 を使用してサードパーティ ログインを実装する方法を紹介します。 QQログインを例に、ユーザー認証の取得、アクセストークンの取得、ユーザー記録の確認などの機能を紹介します。 Beego と OAuth2 を使用してサードパーティ ログイン機能を実装すると、より便利で高速かつ安全なログイン方法をユーザーに提供でき、開発者にもより効率的で優れた開発エクスペリエンスを提供できます。
以上がBeego と OAuth2 を使用したサードパーティ ログインの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。