2016-09-10 8 views
2

discoveryapis_generatorで生成されたDartクライアントライブラリでアクセスしているエンドポイントAPIがあります。生成されたライブラリが私のAPIの認証要件を反映していないようであることを除いて、すべてがうまくいっています。discoveryapis_generatorを使用してGoogle Cloud Endpoints API用のDartクライアントライブラリを生成するにはどうすればよいですか?

認証されたhttpオブジェクトを作成して、アプリケーションのBrowserClient()コンストラクタに次の行に渡すだけでよいですか?

my_api = new MyApi(new BrowserClient()); 

を説明hereようgoogleapis_authパッケージを使用することを認証されたhttpオブジェクトを作成するための推奨方法ですか?正しい軌道にいるのですか?

答えて

2

認証はAPI自体の一部ではありません。実際には、ユーザー認証に適切なhttpヘッダーを送信するhttpクライアントです。標準のGoogle認証メカニズムを使用していると仮定すると、標準のGoogle API(ドライブなど)と同じようにパッケージhttps://pub.dartlang.org/packages/googleapis_authを使用できます。

あなたは私が上書き(かなり古い)プロジェクトを持っているのclientId(グーグルコンソール)を作成し、AuthClient(つまりhttp.clientを拡張)を取得するためにBrowserOAuth2Flowを使用する必要があり、その後からnew MyApi(authClient)

を行います認証時にPlusApiを使用してユーザー名を取得する簡単な例でuserIdを指定できるようにするgoogle authの標準的な動作(実際にはドキュメントは見つかりませんでしたが動作しますが、独自のAPIに対しても同様の動作が可能です) https://github.com/dart-lang/googleapis_examples

+0

ありがとう:たぶんそれは私がサンプルを助けることができるのGoogle APIを使用するためのもありますcreateImplicitBrowserFlow

を呼び出すときに、少なくともemailスコープが必要だと思うhttps://github.com/alextekartik/tekartik_googleapis_auth.dart

を助けることができます。 Webアプリケーション用に認証されたHTTPクライアントを作成する手順に従って、作業しました。それはとても簡単でした。 Plus APIを使用して名前を探すことは面白いです。私はそれを考えなかった。 'var scopes = ['https://www.googleapis.com/auth/userinfo.email'];' –

+0

IAMコンソールにリストされているメールアドレスをプロジェクトとして正常に認証することがわかりましたまたはApp Engineの管理者が、エンドポイントサービスの 'users.is_current_user_admin()'呼び出しがTrueを返すようにするには不十分です。だから、私はOAuthの呪文に何が必要なのか不思議です。 –

+0

上記の回避策として、私はサービスモジュールの管理者電子メールアドレスのリストを管理します。幸いにも、 'endpoint.get_current_user()'呼び出しは成功し、返された 'user.email()'をこのリストに対してチェックします。私は本当にセキュリティ上の落とし穴を考えることはできません。 –

関連する問題