1

新しい Google Cloud Datastore v1beta クライアント ライブラリを使用して、

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "PERMISSION_DENIED",
    "message": "Unauthorized."
   }
  ],
  "code": 403,
  "message": "Unauthorized."
 }
}

あらゆる要求のために。アプリ エンジン アプリを作成し、Cloud Datastore API を追加し、サービス アカウントを構成して、それを使用してリクエストを認証しています。

[TestMethod]
public void BasicBlindWrite()
{
    var service = new DatastoreService(new BaseClientService.Initializer() { Authenticator = CreateAuthenticator() });

    var request = new GoogleData.BlindWriteRequest();
    var entity = new GoogleData.Entity();
    entity.Key = new GoogleData.Key();
    entity.Key.Path = new List<KeyPathElement>();
    entity.Key.Path.Add(new GoogleData.KeyPathElement { Kind = "Consumer", Name = "Consumer-1" });
    var firstName = new GoogleData.Property();
    firstName.Values = new List<GoogleData.Value>();
    firstName.Values.Add(new GoogleData.Value { StringValue = "Samuel"});
    entity.Properties = new GoogleData.Entity.PropertiesData();
    entity.Properties.Add("FirstName", firstName);
    request.Mutation = new GoogleData.Mutation();
    request.Mutation.Upsert = new List<GoogleData.Entity>();
    request.Mutation.Upsert.Add(entity);

    var response = service.Datasets.BlindWrite(request, "my-appengine-project-id").Fetch();
}

private OAuth2Authenticator<AssertionFlowClient> CreateAuthenticator()
{
    var certificate = new X509Certificate2(TestClientCredentials.ClientCertificateFilePath, "notasecret",
        X509KeyStorageFlags.Exportable);

    var provider = new AssertionFlowClient(GoogleAuthenticationServer.Description, certificate)
    {
        ServiceAccountId = TestClientCredentials.CertificateEmailAddress,
        Scope = "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/datastore"
    };

    var authenticator = new OAuth2Authenticator<AssertionFlowClient>(provider, AssertionFlowClient.GetState);

    return authenticator;
}

Web API コンソールを使用すると、機能します。

** アップデート **

サービス アカウントの作成方法は次のとおりです。

  1. AppEngine アプリケーションを作成しました。
  2. Google API コンソールに移動しました。
  3. AppEngine アプリケーションの Google Cloud Datastore API を有効にしました。
  4. 「OAuth 2.0 クライアント ID を作成...」をクリックしました。
  5. ダミーの名前を付けました。
  6. アプリケーションの種類として「サービス アカウント」を選択しました。
  7. 「クライアントIDの作成」をクリック。
  8. [秘密鍵のダウンロード] をクリックします (以下のコードで TestClientCredentials.ClientCertificateFilePath として表される場所)。
4

1 に答える 1

0

この質問と同じ答え。

Cloud Datastore インスタンスでサービス アカウントを適切に構成するには、ドキュメントの説明に従ってCloud Consoleを使用してサービス アカウントを作成する必要があります。

または、[Google API コンソール][3] を使用して作成したサービス アカウントを本当に使用したい場合は、次の手順を実行できます。

  • cloud.google.com/consoleに移動します
  • プロジェクト IDをクリックします。
  • ⚙をクリック</li>
  • チームをクリックします
  • [メンバーを追加] をクリックします
  • サービス アカウントをビューアーとして追加する
于 2013-06-20T17:10:27.953 に答える