2016-07-24 10 views
0

現在、Microsoft AzureとApp Service/Mobile Appsの機能は、ネイティブAndroidアプリとバックエンドのC#を使用してテストしています。AndroidのGoogleプロバイダSDKを使用したMicrosoft Azureモバイル認証

基本アプリケーションとしてGetting Startedアプリケーション(ToDo)を使い始めましたが、https://azure.microsoft.com/en-us/documentation/articles/app-service-authentication-overview/ページとGoogleをプロバイダとして使用して認証を有効にしようとしています。

は、これまでのところ、私は

  • はOAuthのWebクライアントで、Googleのプロジェクトを作成してい
  • URIが設定され、許可リダイレクトがあります。https://.azurewebsites.net/.auth/login/google/ Azureのポータルおよびアプリケーションサービスのインスタンスでコールバック
  • 私が有効になっている認証/認証
  • オプションはGoogleにとって
  • 「要求を許可する」に設定されている「アクション要求が認証されていない場合に取ります」プロバイダクライアントIDとクライアントの秘密を設定しました

Androidアプリでは、GoogleApiClientクラスを使用してユーザーにGoogleアカウントを選択させています。ユーザーは、私はトークンとコードを取得し、私はGoogleAuthUtilクラスを使用してアクセストークンを求めるアカウントを拾ったらまた、私はIDトークンを取得し、サーバー認証コード

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
      .requestEmail() 
      .requestIdToken(getString(R.string.server_client_id)) 
      .requestServerAuthCode(getString(R.string.server_client_id)) 
      .build(); 
    mScopes = gso.getScopeArray(); 

    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .enableAutoManage(this, this) 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build(); 

。私は

​​

アプリのサービストークン(authenticate2法)でそれを交換しようとaccess_tokenはを取得した後、だから私は、サーバーにユーザーのaccess_tokenはを返送するMobileServiceClient.login()メソッドを使用していますためにAzureセッションを取り戻す。

それにもかかわらず、この呼び出しは失敗し、私は戻ってMobileServiceException取得:

com.microsoft.windowsazure.mobileservices.MobileServiceExceptionを:あなたは、このディレクトリまたはページを表示する権限がありません。

私はここで何が不足していますか?

おかげ

答えて

0

まあこれは私が最初に「手動」エンドポイントtokeninfoグーグルを使ってid_tokenを検証してみました:-)

を恥ずかしいよりです: https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=

が、私はジェネリックを得ていました多くの情報を提供しなかったエラー。

は、その後、私はGoogleのAPIのJavaクライアントライブラリを使用して、私のトークン(詳細:https://developers.google.com/identity/sign-in/android/backend-auth)を検証するために、小さなテストを作成し

テストは同様に失敗したことを、私はその理由が期限切れだったことに気づきました現在の時刻よりも小さい私のトークンの時刻。私のエミュレータの時間が正しくないので、これは起こっていた!

"正しい"タイムゾーンを設定すると、すべてが期待通りに機能しました。

郵便配達員に申し訳ありません。ここでコードをテンプレートとして使用することができ、エミュレータの時間を確認することを忘れないでください:-)

関連する問題