Spring Social を使用してソーシャル ネットワークに接続する方法
ソーシャルネットワークは今日、人々の生活に欠かせない部分となっています。 Facebook、LinkedIn、Twitter、Sina Weiboなどの人気ソーシャルネットワーキングサイトは非常に高い人気を集めており、毎日多くの人が訪れるサイトとなっています。ソーシャルネットワークでは大量の情報が共有されています。アプリケーションにはソーシャル ネットワークのサポートを提供する必要があります。アプリはソーシャル ネットワークと統合することで急速に人気を博します。ソーシャル ネットワークとの統合には主に 2 つの機能があります。1 つ目は比較的単純なユーザー ログイン統合で、これによりユーザーはソーシャル ネットワーク Web サイト上の既存のアカウントを使用してアプリケーションにログインできるようになります。この利点は、ユーザーが再登録するプロセスを節約できることと、ユーザーの既存のソーシャル ネットワークとの接続を確立できることです。2 つ目は、ユーザーがアプリケーション内で関連するコンテンツを共有できる緊密な統合方法です。ソーシャルネットワークミドルへ。この利点は、アプリケーション自体を宣伝しながら、ユーザーの粘着性を維持できることです。
ソーシャル ネットワークをアプリケーションに統合するのは複雑な作業ではありません。多くのソーシャル ネットワーキング サービスは、サードパーティ アプリケーションを統合できるオープン API を提供しています。関連するドキュメントを参照して完了してください。ただし、統合自体にはある程度の作業が必要です。統合する必要がある Web サイトの数が増えるほど、それに対応する作業負荷も増加します。 Spring Social は、Spring フレームワーク コンポーネント ファミリの一部として、ソーシャル ネットワーク サービスの抽象化を提供し、操作に関連する API を提供します。
Spring Social を使用する最大の利点は、主流のソーシャル ネットワーキング サイトのサポートがすでに提供されており、必要なのは簡単な構成のみであることです。あまり使用されていない一部のソーシャル ネットワーキング サイトについては、コミュニティから対応するコンポーネントを見つけることもできます。この記事では、サンプル アプリケーションを使用して Spring Social の使用法を説明します。
サンプル アプリケーション
このサンプルでは、ユーザーがソーシャル ネットワーキング サイトにログインして友達の情報を表示できるようにします。これは、Spring MVC フレームワークを使用して構築された Web アプリケーションです。アプリケーションは、組み込みの H2 データベースを使用してデータを保存します。フロントエンドはJSP、JSTL、Springが提供するタグライブラリを使用し、ページレイアウトにはApache Tilesを使用します。 Spring Securityを使用してユーザー認証を管理します。このページは Twitter Bootstrap ライブラリを使用してスタイル設定されています。プロジェクトは Gradle を使用して構築されます。フロントエンド ライブラリは Bower を通じて管理されます。
この例で提供される機能は比較的単純で、主にログイン ページと登録ページ、ユーザーのホームページが含まれます。ログイン時に、ユーザーはサードパーティのソーシャル ネットワークのアカウントを使用することを選択できます。ログインするとSNSの友達情報を確認できます。
既存のソーシャル ネットワーク アカウントを使用してログインします
ソーシャル ネットワークと統合された最も基本的な機能は、ユーザーが既存のアカウントを使用してログインできるようにすることです。ユーザーは、新しいアカウントを登録するだけでなく、他の Web サイトの既存のアカウントを使用してログインすることもできます。この方法は、サードパーティの Web サイトへの接続と呼ばれることがよくあります。ユーザーにとっての通常のシナリオは、登録ページまたはログイン ページで接続するサードパーティのソーシャル ネットワークを選択することです。次に、ログインと認証のためにサードパーティの Web サイトに移動します。上記の手順を完了すると、新しいユーザーが作成されます。接続プロセス中に、アプリケーションはサードパーティのソーシャル ネットワーキング サイトからユーザーのプロファイル情報を取得して、新しいユーザーの作成を完了できます。新しいユーザーが作成されると、ユーザーは次回からサードパーティのソーシャル ネットワークのアカウントを使用して直接ログインできるようになります。
基本構成
Spring Social は、サードパーティ Web サイトのユーザーのログインと登録を処理する Spring MVC コントローラー (Controller) の実装を提供し、ソーシャル ネットワーク アカウントを使用したログインと登録の機能を自動的に完了できます。これらのコントローラーを使用する前に、いくつかの基本的な構成が必要です。 Spring Social の設定は、 org.springframework.social.config.annotation.SocialConfigurer インターフェースを実装することで完了します。 SocialConfigurer インターフェイスを実装する SocialConfig クラスの一部が提供されます。アノテーション「@EnableSocial」は、Spring Social関連の機能を有効にするために使用されます。注釈「@Configuration」は、このクラスに Spring フレームワークに関連する構成情報も含まれていることを示します。 SocialConfigurer インターフェイスには、実装する必要がある 3 つのメソッドがあります:
addConnectionFactories: このコールバック メソッドは、サポートする必要があるソーシャル ネットワークに対応する接続ファクトリーの実装をアプリケーションが追加できるようにするために使用されます。
getUserIdSource: このコールバック メソッドは、現在のユーザーを一意に識別するために使用される org.springframework.social.UserIdSource インターフェースの実装オブジェクトを返します。
getUsersConnectionRepository: このコールバック メソッドは、ユーザーとソーシャル ネットワーク サービス プロバイダー間の通信を管理するために使用される org.springframework.social.connect.UsersConnectionRepository インターフェイスの実装オブジェクトを返します。
特にサンプル アプリケーションの場合、org.springframework.social.linkedin.connect.LinkedInConnectionFactory クラスで表される LinkedIn 接続ファクトリの実装が addConnectionFactories メソッドの実装に追加されます。 getUserIdSource メソッドの実装では、現在ログインしているユーザーの情報を取得するために Spring Security が使用されます。 getUsersConnectionRepository メソッドは、データベースベースの JdbcUsersConnectionRepository クラスの実装オブジェクトを作成します。 LinkedInConnectionFactory クラスは、Spring Social の機能を反映する方法で作成されます。 LinkedIn が提供する機能を直接使用するには、LinkedIn で適用される API キーを提供するだけで済みます。 OAuth に関連する詳細は Spring Social によってカプセル化されます。
1. Spring Social の基本構成の使用
@Configuration@EnableSocialpublic class SocialConfig implements SocialConfigurer { @Inject private DataSource dataSource; @Override public void addConnectionFactories(ConnectionFactoryConfigurer cfConfig, Environment env) { cfConfig.addConnectionFactory(new LinkedInConnectionFactory(env.getProperty("linkedin.consumerKey"), env.getProperty("linkedin.consumerSecret"))); } @Override public UserIdSource getUserIdSource() { return new UserIdSource() { @Override public String getUserId() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication == null) { throw new IllegalStateException("Unable to get a ConnectionRepository: no user signed in"); } return authentication.getName(); } }; } @Override public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator connectionFactoryLocator) { return new JdbcUsersConnectionRepository(dataSource, connectionFactoryLocator, Encryptors.noOpText()); } }
ログイン コントローラー
Spring Social を構成した後の次のステップは、ユーザーの登録とログインを処理するための対応する Spring MVC コントローラーを作成することです。 Spring Social は対応するコントローラー実装をすでに提供しているため、リクエストを行うためのインターフェイスを作成するだけで済みます。最初に作成するのは、サードパーティのソーシャル ネットワーク経由でログインするためのコントローラーです。示されているように、Spring Bean を作成するだけで、必要なコントローラーを作成できます。このコントローラーは、デフォルトで「/signin」URL にバインドされます。各サードパーティ サービス プロバイダーは、LinkedIn の識別子「linkedin」など、対応する識別子を持っています。サービス プロバイダーの識別子は、さまざまなコントローラーの URL の一部として含まれることがよくあります。たとえば、ユーザーが LinkedIn アカウントを通じてログインする必要がある場合、対応する URL は「/signin/linkedin」です。 Twitterアカウントでログインする場合、対応するURLは「/signin/twitter」となります。
2. サードパーティのソーシャル ネットワーク経由でログインするためのコントローラー
@Beanpublic ProviderSignInController providerSignInController(ConnectionFactoryLocator connectionFactoryLocator, UsersConnectionRepository usersConnectionRepository) { return new ProviderSignInController(connectionFactoryLocator, usersConnectionRepository, new SimpleSignInAdapter(new HttpSessionRequestCache())); }
上記では、SimpleSignInAdapter クラスは、ProviderSignInController クラスのログイン ロジックとして機能する org.springframework.social.connect.web.SignInAdapter インターフェイスを実装します。アプリケーション自体が間の橋渡しをします。ユーザーがサードパーティ Web サイトへのログインを完了すると、ユーザーは SignInAdapter インターフェイスを通じてアプリケーションに自動的にログインします。 SimpleSignInAdapter クラスの実装を以下に示します。
3. SimpleSignInAdapter クラスの実装
public class SimpleSignInAdapter implements SignInAdapter { private final RequestCache requestCache; @Inject public SimpleSignInAdapter(RequestCache requestCache) { this.requestCache = requestCache; } @Override public String signIn(String localUserId, Connection<?> connection, NativeWebRequest request) { SignInUtils.signin(localUserId); return extractOriginalUrl(request); } private String extractOriginalUrl(NativeWebRequest request) { HttpServletRequest nativeReq = request.getNativeRequest(HttpServletRequest.class); HttpServletResponse nativeRes = request.getNativeResponse(HttpServletResponse.class); SavedRequest saved = requestCache.getRequest(nativeReq, nativeRes); if (saved == null) { return null; } requestCache.removeRequest(nativeReq, nativeRes); removeAutheticationAttributes(nativeReq.getSession(false)); return saved.getRedirectUrl(); } private void removeAutheticationAttributes(HttpSession session) { if (session == null) { return; } session.removeAttribute(WebAttributes.AUTHENTICATION_EXCEPTION); } }
コード リスト 3 では、SimpleSignInAdapter クラスの SignIn メソッドが SignInUtils クラスの Signin メソッドを呼び出してログインします。その実装については、コード リスト 4 を参照してください。 SignIn メソッドの戻り値は、ログイン成功後のジャンプ URL です。
4. SignInUtils クラスのsignIn メソッドの実装
public class SignInUtils { public static void signin(String userId) { SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken(userId, null, null)); } }
フロントエンド ページ
LinkedIn 経由でログイン プロセスを開始するには、このページを通じてログイン コントローラーの URL に POST リクエストを発行するだけです。図に示すように、フォームを送信することでログイン プロセスを開始できます。ユーザーはまず、アプリケーションを認証するために LinkedIn Web サイトの認証ページに移動します。認証が完了すると、ユーザーは登録できます。
5. ログインページ
<form id="linkedin-signin-form" action="signin/linkedin" method="POST" class="form-signin" role="form"> <h2 class="form-signin-heading">Or Connect by</h2> <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> <button type="submit" class="btn btn-primary">LinkedIn</button> </form>
デフォルトでは、サードパーティ Web サイトの認証が完了すると、ユーザーは URL「/signup」に対応するページにリダイレクトされます。このページでは、ユーザーは関連する登録情報を追加できます。同時に、ユーザーの名前など、サードパーティの Web サイトから取得したユーザー プロファイル情報を事前に入力することができます。フォームが送信された後のこのページのアクションは、表示されているコントローラーによって処理されます。
6. ユーザー登録コントローラーの実装
@RequestMapping(value="/signup", method=RequestMethod.POST) public String signup(@Valid @ModelAttribute("signup") SignupForm form, BindingResult formBinding, WebRequest request) { if (formBinding.hasErrors()) { return null; } Account account = createAccount(form, formBinding); if (account != null) { SignInUtils.signin(account.getUsername()); ProviderSignInUtils.handlePostSignUp(account.getUsername(), request); return "redirect:/"; } return null; }
ユーザーが登録フォームを送信した後、ユーザーが入力した情報に基づいて対応するアカウントを作成し、新しく登録されたアカウントにログインしてホームページに戻ります。
APIを使用する
Spring Social 的另外一个重要的作用在于提供了很多社交网络服务的 API 的封装。当用户通过社交网络的账号登录之后,可以通过相应的 API 获取到相关的信息,或执行一些操作。比如获取到用户的好友信息,或是根据用户的要求发布新的消息。一般来说,很多社交网络服务提供商都有自己的 API 来提供给开发人员使用。不过一般只提供 REST API,并没有 Java 封装。Spring Social 的一个目标是为主流的社交网络提供相应的 Java 封装的 API。对于社区已经有良好的 Java 库的社交网络,如 Twitter,Spring Social 会进行整合与封装;而对于暂时没有 Java 实现的,Spring Social 的组件会提供相应的支持。如示例应用中使用的 LinkedIn 的 Java API 是由 Spring Social 开发的。
在使用 LinkedIn 的 Java API 之前,首先要创建相应的 Spring Bean,如所示。
7. 创建 LinkedIn API 对应的 Bean
@Bean@Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)public LinkedIn linkedin(ConnectionRepository repository) { Connection<LinkedIn> connection = repository.findPrimaryConnection(LinkedIn.class); return connection != null ? connection.getApi() : null; }
LinkedIn Java API 的核心接口是 org.springframework.social.linkedin.api.LinkedIn。如果当前用户已经连接了 LinkedIn 的账号,就可以通过 ConnectionRepository 接口找到该用户对应的连接的信息,并创建出 API 接口的实现。是展示 LinkedIn 上好友信息的控制器的实现。
8. 展示 LinkedIn 上好友信息的控制器的实现
@Controllerpublic class LinkedInConnectionsController { private LinkedIn linkedIn; @Inject public LinkedInConnectionsController(LinkedIn linkedIn) { this.linkedIn = linkedIn; } @RequestMapping(value="/connections", method= RequestMethod.GET) public String connections(Model model) { model.addAttribute("connections", linkedIn.connectionOperations().getConnections()); return "connections"; } }
通过 LinkedIn 接口的 connectionOperations 方法可以获取到 org.springframework.social.linkedin.api.ConnectionOperations 接口的实现,然后就可以再通过 getConnections 方法获取到包含好友信息的 org.springframework.social.linkedin.api.LinkedInProfile 类的对象列表。然后就可以在网页上展示,如所示。
9. 展示 LinkedIn 好友信息的页面
<ul class="media-list"> <c:forEach items="${connections}" var="connection"> <li class="media"> <a href="" class="pull-left"> <img class="lazy-load" data-original="${connection.profilePictureUrl}" alt="" class="media-object"> </a> <div class="media-body"> <h4 class="media-heading">${connection.firstName} ${connection.lastName}</h4> <p><c:out value="${connection.headline}" /></p> </div> </li> </c:forEach> </ul>
结束语
在社交网络日益流行的今天,Web 应用都应该考虑增加对社交网络的支持。这样既方便了用户,让他们省去了重新注册的麻烦,又可以增加用户粘性,同时可以通过社交网络进行推广。虽然很多社交网站都提供了开放 API 来让应用使用其服务,但是集成所需的工作量是不小的。Spring Social 作为 Spring 框架中的一部分,为在 Web 应用中集成社交网络提供了良好支持。本文详细介绍了如何通过 Spring Social 来实现通过社交网络账号进行登录以及使用社交网络提供的 API。
以上がSpring Social を使用してソーシャル ネットワークに接続する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









CrystalDiskMark は、シーケンシャルおよびランダムの読み取り/書き込み速度を迅速に測定する、ハード ドライブ用の小型 HDD ベンチマーク ツールです。次に、編集者が CrystalDiskMark と Crystaldiskmark の使用方法を紹介します。 1. CrystalDiskMark の概要 CrystalDiskMark は、機械式ハード ドライブとソリッド ステート ドライブ (SSD) の読み取りおよび書き込み速度とパフォーマンスを評価するために広く使用されているディスク パフォーマンス テスト ツールです。 ). ランダム I/O パフォーマンス。これは無料の Windows アプリケーションで、使いやすいインターフェイスとハード ドライブのパフォーマンスのさまざまな側面を評価するためのさまざまなテスト モードを提供し、ハードウェアのレビューで広く使用されています。

Keep 体脂肪計の接続方法 Keep には特別に設計された体脂肪計がありますが、ほとんどのユーザーは Keep 体脂肪計の接続方法を知りません。エディターがユーザーにもたらすもの、興味のあるユーザーは見に来てください! Keep 体脂肪計の接続方法 1. まず Keep ソフトウェアを開き、メイン ページに移動し、右下隅の [マイ] をクリックして、[スマート ハードウェア] を選択します; 2. 次に、[マイ スマート デバイス] ページで、中央の[デバイスの追加]ボタンをクリックします; 3、インターフェイスを追加するデバイスを選択し、[スマート体脂肪/体重計]を選択します; 4.デバイスモデルの選択ページで、[体脂肪スケールを維持する]をクリックしますオプション; 5. 最後に、以下のインターフェイスで、最後に下部の[今すぐ追加]

foobar2000 は、音楽リソースをいつでも聴くことができるソフトウェアです。あらゆる種類の音楽をロスレス音質で提供します。音楽プレーヤーの強化版により、より包括的で快適な音楽体験を得ることができます。その設計コンセプトは、高度なオーディオをコンピュータ上で再生可能 デバイスを携帯電話に移植し、より便利で効率的な音楽再生体験を提供 シンプルでわかりやすく、使いやすいインターフェースデザイン 過度な装飾や煩雑な操作を排除したミニマルなデザインスタイルを採用また、さまざまなスキンとテーマをサポートし、自分の好みに合わせて設定をカスタマイズし、複数のオーディオ形式の再生をサポートする専用の音楽プレーヤーを作成します。過度の音量による聴覚障害を避けるために、自分の聴覚の状態に合わせて調整してください。次は私がお手伝いさせてください

Spring+AI は業界リーダーとして、強力で柔軟な API と高度な機能を通じてさまざまな業界に最先端のソリューションを提供します。このトピックでは、さまざまな分野での Spring+AI の応用例を詳しく掘り下げ、Spring+AI がどのように特定のニーズを満たし、目標を達成し、これらの教訓をより広範囲のアプリケーションに拡張するかを示します。このトピックが Spring+AI の無限の可能性をより深く理解し、活用するきっかけになれば幸いです。 Spring フレームワークはソフトウェア開発の分野で 20 年以上の歴史があり、Spring Boot 1.0 バージョンがリリースされてから 10 年が経過しました。今、その春に異論を唱える人はいない

NetEase Mailbox は、中国のネットユーザーに広く使用されている電子メール アドレスとして、その安定した効率的なサービスで常にユーザーの信頼を獲得してきました。 NetEase Mailbox Master は、携帯電話ユーザー向けに特別に作成された電子メール ソフトウェアで、電子メールの送受信プロセスが大幅に簡素化され、電子メールの処理がより便利になります。 NetEase Mailbox Master の使い方と具体的な機能について、以下ではこのサイトの編集者が詳しく紹介しますので、お役に立てれば幸いです。まず、モバイル アプリ ストアで NetEase Mailbox Master アプリを検索してダウンロードします。 App Store または Baidu Mobile Assistant で「NetEase Mailbox Master」を検索し、画面の指示に従ってインストールします。ダウンロードとインストールが完了したら、NetEase の電子メール アカウントを開いてログインします。ログイン インターフェイスは次のとおりです。

クラウド ストレージは今日、私たちの日常生活や仕事に欠かせない部分になっています。中国有数のクラウド ストレージ サービスの 1 つである Baidu Netdisk は、強力なストレージ機能、効率的な伝送速度、便利な操作体験により多くのユーザーの支持を得ています。また、重要なファイルのバックアップ、情報の共有、オンラインでのビデオの視聴、または音楽の聴きたい場合でも、Baidu Cloud Disk はニーズを満たすことができます。しかし、Baidu Netdisk アプリの具体的な使用方法を理解していないユーザーも多いため、このチュートリアルでは Baidu Netdisk アプリの使用方法を詳しく紹介します。まだ混乱しているユーザーは、この記事に従って詳細を学ぶことができます。 Baidu Cloud Network Disk の使用方法: 1. インストール まず、Baidu Cloud ソフトウェアをダウンロードしてインストールするときに、カスタム インストール オプションを選択してください。

MetaMask (中国語ではリトル フォックス ウォレットとも呼ばれます) は、無料で評判の高い暗号化ウォレット ソフトウェアです。現在、BTCC は MetaMask ウォレットへのバインドをサポートしており、バインド後は MetaMask ウォレットを使用してすぐにログイン、値の保存、コインの購入などが可能になり、初回バインドで 20 USDT のトライアル ボーナスも獲得できます。 BTCCMetaMask ウォレットのチュートリアルでは、MetaMask の登録方法と使用方法、および BTCC で Little Fox ウォレットをバインドして使用する方法を詳しく紹介します。メタマスクウォレットとは何ですか? 3,000 万人を超えるユーザーを抱える MetaMask Little Fox ウォレットは、現在最も人気のある暗号通貨ウォレットの 1 つです。無料で使用でき、拡張機能としてネットワーク上にインストールできます。

Appleは火曜日にiOS 17.4アップデートを公開し、iPhoneに多数の新機能と修正をもたらした。このアップデートには新しい絵文字が含まれており、EU ユーザーは他のアプリ ストアから絵文字をダウンロードすることもできます。さらに、このアップデートでは iPhone のセキュリティ制御も強化され、より多くの「盗難デバイス保護」設定オプションが導入され、ユーザーにより多くの選択肢と保護が提供されます。 「iOS17.3では、「盗難デバイス保護」機能が初めて導入され、ユーザーの機密情報のセキュリティが強化されています。ユーザーが自宅やその他の身近な場所から離れている場合、この機能ではユーザーは最初に生体認証情報を入力する必要がありますApple ID パスワードの変更や盗難デバイス保護の無効化など、特定のデータにアクセスして変更するには、情報を再度入力する必要があります。
