Dart を使用したユーザー認証の簡単な例を見つけようとしています。これまでのところ、私が見つけた最も近いものはhttps://github.com/dart-lang/bleeding_edge/blob/master/dart/tests/standalone/io/http_auth_test.dartです。誰でも、Dart を使用したサーバー側認証の実例を教えてくれますか? 前もって感謝します。
1 に答える
認証は膨大なトピックであり、達成したいことをあまり特定していませんでしたが、Dart アプリケーション用の Facebook 認証を作成する方法を説明しましょう。なんで?使用している可能性のあるすべてのデータベース、またはデータベース構造、モデルなどのセットアップ方法、およびセキュリティの処理方法 (トークンの生成など) について話す必要はないからです。
この知識があれば、他のサービス認証 (Google+、Twitter) を実装でき、最終的には必要に応じて独自の認証を実装できます。
そこで、まずCreate New Appを押してFacebook アプリページにアプリケーションを登録します。このページを取得する必要があります。
(必ずアプリ ドメインとサイト URL の両方を入力してください)
config.dart
次に、必要な場所にインポートする構成ファイルをどこかに指定します (例: )。
var config = {
'authentication': {
'facebook': {
'appId': '...',
'appSecret': '...',
'url': 'http://test.com/login/facebook'
}
},
};
次に、どこかにリンクを作成する必要があります。Web UI を使用している場合、Dart スクリプトは最初に構成をインポートしてログイン URL を作成できます。
import 'config.dart';
main() {
var fbConfig = config['authentication']['facebook'];
var appId = fbConfig['appId'];
var url = fbConfig['url'];
var loginLinkUrl = 'https://www.facebook.com/dialog/oauth/?client_id=$appId&redirect_uri=$url&state=TEST_TOKEN&scope=email';
}
HTML でリンクを指定します。
<a href="{{ loginLinkUrl }}">Login with Facebook</a>
この時点で、おそらく Facebook 開発者ガイドを読んでください: https://developers.facebook.com/docs/reference/dialogs/oauth/
Facebook のログイン ダイアログは、config ( /login/facebook
) で指定した URL にユーザーを送り、アプリケーションはそれに応答する必要があります。ルーティングは好きなように処理できますが、基本的にサーバーは/login/facebook
リクエストを受信すると、最初にいくつかのプロパティをエンコードします。
var code = uri.encodeUriComponent(request.queryParameters['code']);
var appId = uri.encodeUriComponent(config['authentication']['facebook']['appId']);
var appSecret = uri.encodeUriComponent(config['authentication']['facebook']['appSecret']);
var url = uri.encodeUriComponent(config['authentication']['facebook']['url']);
import 'dart:uri' as uri
最初にする必要があります。
この後、Facebook への API リクエストを行うコードが少し続きます。
http.read('https://graph.facebook.com/oauth/access_token?client_id=$appId&redirect_uri=$url&client_secret=$appSecret&code=$code').then((contents) {
// "contents" looks like: access_token=USER_ACCESS_TOKEN&expires=NUMBER_OF_SECONDS_UNTIL_TOKEN_EXPIRES
var parameters = QueryString.parse('?$contents');
var accessToken = parameters['access_token'];
// Try to gather user info.
http.read('https://graph.facebook.com/me?access_token=$accessToken').then((contents) {
var user = JSON.parse(contents);
print(user); // Logged in as this user.
});
});
ここではHTTPパッケージとQueryStringパッケージを使用しています。
API 要求の後、手元にユーザー情報があります。これで、認証されたユーザーをセッションに保存するなどのことができます。たとえばHttpRequest.session
、この目的で使用できます。ログアウトするには、セッションからデータを削除するだけです。
これは、Facebook 認証を機能させるために必要な大まかな手順です。他の多くの Web サイトでも同様のワークフローが期待できます。OAuth2
パッケージが必要/使用される場合もあります。
要約すると:
- 適切な URL を使用して Facebook 開発者プロファイルとアプリを作成します。
- アプリIDなどをいくつかの設定に書き留めます。
- 適切なログイン リンクを作成します。
- Facebook ログインがユーザーをスローする場所にサーバー側コードを記述します。
- サーバーにいくつかの API 呼び出しを記述して、認証済みユーザーを取得します。
楽しむ!