3

Cloud Endpoints を使用し、クライアント側の oauth を実行してバックエンドにアクセスしています。これは問題なく動作しますが、ページ全体と添付されたスクリプトが読み込まれ、oauth 要求が完了した後にのみ、アプリの URL にアクセスした人がユーザーであるかどうかを確認できることを意味します。

サーバー側の認証を有効にして、ランディング ページとアプリに同じ URL を使用し、そのユーザーがユーザーの場合はアプリに、そうでない場合はランディング ページにリダイレクトできるようにしたいと考えています。

問題は、ユーザー チュートリアルでは認証にUserServiceを使用するのに対し、Cloud Endpoints ではOAuth Serviceを使用することです。上記にリンクされている OAuth セクションのすべてのリンクは OAuth 1 用であり、非推奨であるため、リダイレクト フィルターで OAuth を使用する方法がわかりません。

訪問者がユーザーであるかどうかをリダイレクト フィルターで確認し、同時にユーザーである場合にエンドポイントを呼び出すために使用できるトークンを取得するにはどうすればよいですか?

私はGoogle Api JS クライアントを使用してクラウド エンドポイントを呼び出しているため、ソリューションはそれと最適に統合され、gapi.auth.setToken(token)取得したトークンを使用してgapi.auth.authorize(params, callback)ダンス全体をバイパスします。

4

2 に答える 2

4

新しいフローを提供して oauth-token をフェッチし、そのアクセス トークンを検証して、保護されたリソースの承認を付与するログイン フローのカスタム サーブレット実装を提供できます。

Google はこちらで優れたリファレンス ドキュメントを提供しています。このサンプル コード リポジトリを参照用に使用できます。

于 2015-04-10T08:05:27.653 に答える
0

エンドポイントにはユーザー API を使用できます。ニーズに合わない場合は OAuth を使用する必要はありません。com.google.appengine.api.users.Userタイプのパラメーターをエンドポイントに追加するだけです。ここで述べたように。

例えば:

 @ApiMethod(name = "scores.insert")
    public Score insert(Score score, User user) throws OAuthRequestException, IOException {
      //Check if user is null
      //Do your thing

    }
于 2015-04-03T03:05:10.733 に答える