ホームページ バックエンド開発 Golang Beego と OAuth2 を使用したサードパーティ ログインの実装

Beego と OAuth2 を使用したサードパーティ ログインの実装

Jun 22, 2023 pm 08:34 PM
oauth サインインするには beego

インターネットの急速な発展に伴い、サードパーティのログインはオンライン生活に不可欠な部分になりました。サードパーティ ログインは、より便利、高速、安全なログイン方法をユーザーに提供し、従来の登録ログイン方法よりも人気があります。現在、市場に出回っているサードパーティ ログインには、主に QQ、WeChat、Weibo などの大規模なソーシャル プラットフォームが含まれています。サードパーティのログイン機能を迅速に実装するにはどうすればよいですか?この記事では、Beego と OAuth2 を使用してサードパーティのログイン機能を実装する方法を紹介します。

1. Beego の概要

Beego は、オープンソースの高速 Go プログラミング フレームワークです。柔軟性と拡張性が高く、多数のツールとライブラリを提供します。 Beego は、開発者が Web アプリケーションを迅速に構築できるように支援し、自動ルート管理、テンプレート システム、静的ファイルの提供などの重要な機能を提供します。

2. OAuth2 プロトコルの概要

OAuth2 は、パスワードやその他の機密情報を第三者に共有することなく、ユーザーが自分に代わって動作するように他のアプリケーションを承認できるようにする承認フレームワーク プロトコルです。 - パーティーサービス。このプロトコルは、リソース所有者、リソース サーバー、クライアント、認証サーバーの 4 つの役割を定義します。このうち、リソース所有者はアクセス権を持つユーザーを指し、リソースサーバーは情報リソースをホストするサーバーを指し、クライアントは保護されたリソースへのアクセスを要求するソフトウェアプログラムを指し、認証サーバーはクライアントの認証を指します。 ID と、保護されたリソースやサービスへのアクセスの承認。

3. Beego と OAuth2 を使用してサードパーティ ログインを実装する

  1. Beego プロジェクトを作成する

まず、ローカル用の Beego プロジェクトを作成する必要があります。開発とテスト。次のコマンドを使用します (最初に Beego をインストールする必要があります):

bee new thirdpartylogin
ログイン後にコピー
  1. 必要なライブラリをインストールします

github などの必要なライブラリをいくつかインストールする必要があります。 com/astaxie /beego および github.com/astaxie/beego/orm は、次のコマンドを使用してインストールできます:

go get github.com/astaxie/beego
go get github.com/astaxie/beego/orm
ログイン後にコピー
  1. データベースの作成

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;
ログイン後にコピー
  1. サードパーティ ログインの構成

サードパーティ ログインを使用する必要があります。認証用。現在、QQ、WeChat、Weibo などの大規模なソーシャル プラットフォームを含む、さまざまなサードパーティのログイン方法が市場に出回っています。 QQ ログインを例にして説明します。

まず、QQ インターネット オープン プラットフォーム (https://connect.qq.com/) にアプリケーションを登録して、App IDApp 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 メソッドを使用して認証アドレスを生成し、ユーザーを認証ページにリダイレクトします。

次に、QQ コールバック リクエストを受信し、アクセス トークンを取得するには、次のコードを追加する必要があります。

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP と OAuth: Microsoft ログイン統合の実装 PHP と OAuth: Microsoft ログイン統合の実装 Jul 28, 2023 pm 05:15 PM

PHP と OAuth: Microsoft ログイン統合の実装 インターネットの発展に伴い、便利な登録とログイン エクスペリエンスを提供するために、ユーザーがサードパーティ アカウントを使用してログインできるようにする必要がある Web サイトやアプリケーションがますます増えています。 Microsoft アカウントは世界中で広く使用されているアカウントの 1 つであり、多くのユーザーが Web サイトやアプリケーションにログインするために Microsoft アカウントを使用したいと考えています。 Microsoft ログインの統合を実現するには、OAuth (Open Authorization) プロトコルを使用します。 OAuth は、ユーザーがサードパーティのアプリケーションに代わって動作することを承認できるオープン標準の承認プロトコルです。

PHP の OAuth: JWT 認証サーバーを作成する PHP の OAuth: JWT 認証サーバーを作成する Jul 28, 2023 pm 05:27 PM

PHP での OAuth: JWT 認証サーバーの作成 モバイル アプリケーションの台頭とフロントエンドとバックエンドの分離の傾向により、OAuth は最新の Web アプリケーションに不可欠な部分になりました。 OAuth は、標準化されたプロセスとメカニズムを提供することで、ユーザーのリソースを不正アクセスから保護する承認プロトコルです。この記事では、PHP を使用して JWT (JSONWebTokens) ベースの OAuth 認証サーバーを作成する方法を学びます。 JWT の一種です。

PHP と OAuth を使用して Google ドライブを統合する方法 PHP と OAuth を使用して Google ドライブを統合する方法 Jul 31, 2023 pm 04:41 PM

PHP と OAuth を使用して GoogleDrive を統合する方法 GoogleDrive は、ユーザーがクラウドにファイルを保存し、他のユーザーと共有できるようにする人気のクラウド ストレージ サービスです。 GoogleDriveAPI を通じて、PHP を使用して GoogleDrive と統合するコードを記述し、ファイルのアップロード、ダウンロード、削除、その他の操作を実装できます。 GoogleDriveAPI を使用するには、OAuth 経由で認証する必要があります。

OAuth2認証方式とPHPでの実装 OAuth2認証方式とPHPでの実装 Aug 07, 2023 pm 10:53 PM

OAuth2 認証方法と PHP での実装 インターネットの発展に伴い、サードパーティのプラットフォームと対話する必要があるアプリケーションがますます増えています。ユーザーのプライバシーとセキュリティを保護するために、多くのサードパーティ プラットフォームは OAuth2 プロトコルを使用してユーザー認証を実装しています。この記事では、OAuth2 認証方法と PHP での実装を紹介し、対応するコード例を添付します。 OAuth2 は、ユーザーがサードパーティのアプリケーションが別のサービス プロバイダー上のリソースにアクセスすることを、何も言及せずに承認できるようにする承認フレームワークです。

テクノロジーの世界を探索できる、厳選された 5 つの Go 言語オープンソース プロジェクト テクノロジーの世界を探索できる、厳選された 5 つの Go 言語オープンソース プロジェクト Jan 30, 2024 am 09:08 AM

今日の急速な技術発展の時代では、雨後の筍のようにプログラミング言語が出現しています。多くの注目を集めている言語の 1 つは Go 言語です。Go 言語は、そのシンプルさ、効率性、同時実行の安全性などの機能により多くの開発者に愛されています。 Go 言語は、多くの優れたオープンソース プロジェクトがある強力なエコシステムで知られています。この記事では、厳選された 5 つの Go 言語オープンソース プロジェクトを紹介し、読者を Go 言語オープンソース プロジェクトの世界へ導きます。 KubernetesKubernetes は、自動化されたオープンソースのコンテナ オーケストレーション エンジンです。

サードパーティのログインに Hyperf フレームワークを使用する方法 サードパーティのログインに Hyperf フレームワークを使用する方法 Oct 25, 2023 am 09:16 AM

サードパーティ ログインに Hyperf フレームワークを使用する方法 はじめに: インターネットの発展に伴い、サードパーティ ログインは多くの Web サイトやアプリケーションの標準機能になりました。サードパーティのログインを通じて、ユーザーはサードパーティのプラットフォーム上の既存のアカウント情報を使用して他の Web サイトやアプリケーションにログインできるため、面倒な登録プロセスが回避され、ユーザー エクスペリエンスが大幅に向上します。この記事では、Hyperf フレームワークを使用してサードパーティのログイン機能を実装する方法を、具体的なコード例とともに紹介します。 1. 準備作業 サードパーティログインの実装を開始する前に、

QQ ログイン統合に PHP と OAuth を使用する方法 QQ ログイン統合に PHP と OAuth を使用する方法 Jul 31, 2023 pm 12:37 PM

QQ ログイン統合に PHP と OAuth を使用する方法の紹介: ソーシャル メディアの発展に伴い、ユーザーが簡単に登録してログインできるように、サードパーティのログイン機能を提供する Web サイトやアプリケーションが増えています。中国最大のソーシャル メディア プラットフォームの 1 つである QQ は、多くの Web サイトやアプリケーションで提供されるサードパーティのログイン サービスとしても利用されています。この記事では、QQ ログイン統合に PHP と OAuth を使用する方法の手順をコード例とともに紹介します。ステップ 1: QQ オープン プラットフォーム開発者として登録します。QQ ログインの統合を開始する前に、

PHP を使用して OAuth2 に基づいたサードパーティの承認と認証を実装する PHP を使用して OAuth2 に基づいたサードパーティの承認と認証を実装する Aug 08, 2023 am 10:53 AM

PHP を使用して、OAuth2 に基づくサードパーティの承認と認証を実装します。OAuth2 は、サードパーティのアプリケーションがユーザー リソースにアクセスすることを承認するために使用されるオープン標準プロトコルです。シンプル、安全、柔軟であり、さまざまな Web アプリケーションやモバイル アプリケーションで広く使用されています。 PHP では、サードパーティのライブラリを使用して OAuth2 認可と認証を実装できます。この記事では、サンプル コードを組み合わせて、PHP を使用して OAuth2 に基づくサードパーティの承認と認証を実装する方法を紹介します。まず、コンポを使用する必要があります

See all articles