8

Dart を使用したユーザー認証の簡単な例を見つけようとしています。これまでのところ、私が見つけた最も近いものはhttps://github.com/dart-lang/bleeding_edge/blob/master/dart/tests/standalone/io/http_auth_test.dartです。誰でも、Dart を使用したサーバー側認証の実例を教えてくれますか? 前もって感謝します。

4

1 に答える 1

14

認証は膨大なトピックであり、達成したいことをあまり特定していませんでしたが、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 呼び出しを記述して、認証済みユーザーを取得します。

楽しむ!

于 2013-03-20T00:48:29.453 に答える