2

私は、(Python &標準環境を使用して)モノアプリケーションのGoogle App Engineアプリケーションを1つのアプリケーション内の複数のサービスに分割しようとしています。デフォルトのサービスは、別のサービスのEndpointsフレームワークを使用して実装された呼び出しAPIです。Google Cloud Endpointsでサービス間認証を確認するにはどうすればよいですか?

デフォルトのサービスの認証を正しく確認する方法がわからないことを除いて、すべてうまく動作します(ローカル開発サーバーと本番環境の両方で動作させる)。

サービスを呼び出すには、google-api-python-clientとデフォルトのアプリケーションの資格情報を使用しています。

from googleapiclient.discovery import build 
from oauth2client.client import GoogleCredentials 
service = build(
    name, version, 
    credentials=GoogleCredentials.get_application_default(), 
    discoveryServiceUrl=discovery_url) 
service.client_token().execute() 

マイサービスAPIコードは、生産endpoints.get_current_user()では、次の

@endpoints.api(
    name='test', 
    version='v1', 
) 
class TestApi(remote.Service): 

    @endpoints.method(
     message_types.VoidMessage, 
     TestResponse, 
     path='test', 
     http_method='GET', 
     name='test') 
    def get_test(self, request): 
     # user = endpoints.get_current_user() 
     # if not user: 
     #  raise endpoints.UnauthorizedException 
     return TestResponse(test='test') 

のように見える正しいアプリケーションのユーザーを返すようですが、私は正しくそれが同じアプリケーションだことを検証する方法がわかりません。ローカル開発環境でendpoints.get_current_user()Noneを返します。

+0

まだ問題を解決しましたか? :)あなたがした場合私は非常に興味がある –

+0

@キングリロードはい、それはかなり簡単なことであることが判明しました。私はswaggerファイルを生成して展開する必要がありました。私は今日後で詳細な回答を投稿しようとします。 – Fedor

+0

あなたは自分で解決できてうれしく思っています^^投稿について私に通知してください:)私は非常に興味があります –

答えて

-1

あなたは間違っています。 userを定義していますが、使用していません。

は、パーソナライズされたメッセージとログアウトするリンクでアプリにサインインしたユーザーを迎えます。ユーザーがログインしていない場合は、Googleアカウントのログインページへのリンクが表示されます。

あなたはfrom google.appengine.api import usersモジュールを使用する場合:

def get(self): 
    user = users.get_current_user() 
    if user: 
     nickname = user.nickname() 
     logout_url = users.create_logout_url('/') 
     greeting = 'Welcome, {}! (<a href="{}">sign out</a>)'.format(nickname, logout_url) 
    else: 
     login_url = users.create_login_url('/') 
     greeting = '<a href="{}">Sign in</a>'.format(login_url) 

    self.response.write('<html><body>{}</body></html>'.format(greeting)) 

userを作成するとき、あなたはまだそれが空だかいないかどうかを確認する必要があります。プラスuserには異なる値が格納されます。だからあなたは彼らに電話をかけてそれを定義するだけです。

アクセスするためにユーザーにログインする必要があるページがある場合は、app.yamlファイルにこれを適用することができます。

デフォルトでは、アプリは認証にGoogleアカウントを使用します。 Google Appsドメインなど別のオプションを選択するには、Google Cloud Platformコンソールでプロジェクトのsettingsページにアクセスし、Editをクリックします。 Google認証dropdown menuで、目的の認証タイプを選択し、Saveをクリックします。


ただし、Tipfyフレームワークを使用することもできます。

+0

私はGoogle Cloud Endpointsを使用しています。 – Fedor

+1

@Fedorそれであなたはそれを参照していないので、あなたの質問にそれを記述しておいてください、これは問題の解決策になるはずですが、私の答えを見直してくれてありがとう:ありがとう –

関連する問題