我想从经纬度坐标中检索地址。我在谷歌控制台中创建了项目。添加计费信息并启用地理编码 api 服务。但是当我提出这个请求时,我仍然收到以下错误
https://maps.googleapis.com/maps/api/geocode/json?latlng=41.89,12.49&key=xxxx
您必须在https://console.cloud.google.com/project/_/billing/enable上对 Google Cloud 项目启用计费
google-maps geocoding google-cloud-platform google-cloud-billing
我想允许用户模拟服务帐户来对长时间运行的进程执行操作。但是,所有代码示例都说明了一个服务帐户模拟另一个服务帐户。
用户可以直接冒充服务帐号吗?如果是这样,怎么办?
我正在遵循这个示例代码。
初始化一个无权访问列表桶的源凭证:
from google.oauth2 import service_acccount
target_scopes = [
'https://www.googleapis.com/auth/devstorage.read_only']
source_credentials = (
service_account.Credentials.from_service_account_file(
'/path/to/svc_account.json',
scopes=target_scopes))
Run Code Online (Sandbox Code Playgroud)
现在使用源凭据来获取凭据以模拟另一个服务帐户:
from google.auth import impersonated_credentials
target_credentials = impersonated_credentials.Credentials(
source_credentials=source_credentials,
target_principal='impersonated-account@_project_.iam.gserviceaccount.com',
target_scopes = target_scopes,
lifetime=500)
Run Code Online (Sandbox Code Playgroud) impersonation service-accounts google-cloud-platform google-iam google-cloud-iam
我正在尝试按照本指南使用非默认服务帐户部署服务,它说我需要“iam.serviceAccounts.actAs正在部署的服务帐户的权限”。我使用的服务帐户是@cloudbuild.gserviceaccount.com,但我在项目的“权限”页面上看不到添加它的选项。
service-accounts google-cloud-platform google-iam google-cloud-iam
我正在使用 terraform 在 GCP 中构建基础设施。我正在尝试将角色分配给service account使用 terraform 的人,但无法这样做。下面是我的代码:
sa.tf:
resource "google_service_account" "mojo-terra" {
account_id = "mojo-terra"
description = "Service account used for terraform script"
}
resource "google_project_iam_member" "mojo-roles" {
count = length(var.rolesList)
role = var.rolesList[count.index]
member = "serviceAccount:${google_service_account.mojo-terra.email}"
}
Run Code Online (Sandbox Code Playgroud)
dev.tfvars:
rolesList = [
"roles/iam.serviceAccountUser"
]
Run Code Online (Sandbox Code Playgroud)
云构建日志:
Step #2: Error: Error when reading or editing Resource "project \"poc-dev\"" with IAM Policy: Error retrieving IAM policy for project "poc-dev": googleapi: Error 403: The caller does not have permission, forbidden
Step …Run Code Online (Sandbox Code Playgroud) google-cloud-platform terraform google-cloud-iam terraform-provider-gcp
问题:缺少OAuth 2刷新令牌.
问题是localhost版本接收Refresh Token授权令牌的一部分,但GCE中运行的相同代码不会.
细节:
我编写了一个实现Google OAuth 2.0的Python Flask应用程序.此Web应用程序在云中运行,具有经过验证的域名,有效的SSL证书和HTTPS端点.此未修改的Web应用程序也以localhost.运行时之间的区别在于localhost版本不使用TLS.代码流中没有其他差异.
除了Refresh Token缺少,我不能自动更新token,一切都很完美.
我已经广泛研究过这个问题.access_type=offline正确实现API等问题,否则我不会Refresh Token在localhost版本中获得.
我正在使用requests_oauthlibpython库.
gcp = OAuth2Session(
app.config['gcp_client_id'],
scope=scope,
redirect_uri=redirect_uri)
# print('Requesting authorization url:', authorization_base_url)
authorization_url, state = gcp.authorization_url(
authorization_base_url,
access_type="offline",
prompt="select_account",
include_granted_scopes='true')
session['oauth_state'] = state
return redirect(authorization_url)
# Next section of code after the browser approves the request
token = gcp.fetch_token(
token_url,
client_secret=app.config['gcp_client_secret'],
authorization_response=request.url)
Run Code Online (Sandbox Code Playgroud)
令牌refresh_token在运行时有,localhost但在云中运行时没有.
此Google文档讨论了刷新令牌,表明Web应用程序支持此功能.
[更新11/18/2018]
我发现这个 …
google-openid oauth-2.0 google-oauth google-cloud-platform requests-oauthlib
已知问题:
安装 google-cloud-sdk(linux 包或来自 tarball)有一个怪癖,在接受服务条款之前,您无法从命令行创建项目。
重现步骤:
这将吐出一个错误,如:
错误:(gcloud.projects.create)操作 [cp.5641973328385684887] 失败:9:呼叫者必须接受服务条款
我猜测接受服务条款尚未内置到命令行初始化中。在安装过程中省略这样一个基本步骤应该是非法的,其后果从一千次敲击致死,到“他妈的构建一个操作系统”……但这只是我……
google-app-engine google-cloud-platform google-cloud-sdk google-cloud-iam
我想使用Windows命令提示符下的curl执行Google OAuth 2.0。我的目标是更好地了解OAuth服务器实现的身份验证流程,请参阅HTTP标头等。
如何使用Windows命令提示符中的curl.exe完成此操作?
curl oauth-2.0 google-oauth google-cloud-platform google-oauth2
我在 Google Cloud Platform 中创建了一个服务帐户并下载了 JSON 格式的私钥。我正在尝试通过 REST API 创建一个计算资源。出于身份验证目的,我需要一个 AccessToken,需要将其设置为创建计算资源 REST API 的标头。是否有 REST API 从私钥获取访问令牌(不使用 SDK 或 Google 客户端)?
google-authentication google-oauth service-accounts google-cloud-platform
我目前正在尝试通过C#与Google Admin SDK集成,以便我们可以通过自己的系统管理用户。但是,在运行项目时出现错误:未经授权的客户端。
我已经通过超级管理员帐户完成的操作:
这是我正在使用的代码。
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(_googleServiceSettings.Client_Email)
{
ProjectId = _googleServiceSettings.Project_Id,
User = "superadmin@google.com",
Scopes = new[] { DirectoryService.Scope.AdminDirectoryUser }
}.FromPrivateKey(_googleServiceSettings.Private_Key));
var service = new DirectoryService(new BaseClientService.Initializer
{
HttpClientInitializer = credential,
ApplicationName = "Test API"
});
var request = service.Users.Get("user@google.com");
var result = await request.ExecuteAsync();
Run Code Online (Sandbox Code Playgroud)
我得到的全部错误是
执行请求时发生未处理的异常。Google.Apis.Auth.OAuth2.Responses.TokenResponseException:错误:“ unauthorized_client”,说明:“客户端未经授权使用此方法检索访问令牌,或者客户端未获得所请求的任何范围的授权。”,Uri:“”
c# google-api google-api-dotnet-client google-admin-sdk gsuite
我正在尝试使用命令行将计算实例启动到 GCP 中:
gcloud compute instances create instance-1 --zone=uscentral1-a
Run Code Online (Sandbox Code Playgroud)
它告诉我该项目的计费尚未开放:
API [compute.googleapis.com] not enabled on project [847006780503].
Would you like to enable and retry (this will take a few minutes)?
(y/N)? Y
Enabling service [compute.googleapis.com] on project [847006780503]...
ERROR: (gcloud.compute.instances.create) FAILED_PRECONDITION: Billing account for project '847006780503' is not open. Billing must be enabled for activation of service(s) 'compute.googleapis.com,compute.googleapis.com,compute.googleapis.com' to proceed.
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
violations:
- subject: ?error_code=390002&project=847006780503&services=compute.googleapis.com&services=compute.googleapis.com&services=compute.googleapis.com
type: googleapis.com/billing-enabled
- '@type': type.googleapis.com/google.rpc.ErrorInfo
domain: serviceusage.googleapis.com/billing-enabled
metadata:
project: '847006780503'
services: compute.googleapis.com,compute.googleapis.com,compute.googleapis.com
reason: …Run Code Online (Sandbox Code Playgroud) google-oauth ×3
google-iam ×2
oauth-2.0 ×2
c# ×1
curl ×1
geocoding ×1
google-api ×1
google-maps ×1
gsuite ×1
terraform ×1