用于服务器+ Xcode 8.1的Swift + Vapor框架
我正在尝试阅读Firebase实时数据库向我的数据库发出HTTP请求,但我得到了许可被拒绝.
以下是这些步骤:
1.使用从"console.developers.google.com"下载的密钥创建JWT签名
2.将POST请求发送到OAuth2服务器并获取访问令牌
3.将GET请求发送到firebase数据库,并从中接收访问令牌OAuth2服务器.
我得到"权限被拒绝",HTTP/1.1 403禁止
// the header of the JSON Web Token (first part of the JWT)
let headerJWT = ["alg":"RS256","typ":"JWT"]
// the claim set of the JSON Web Token
let jwtClaimSet =
["iss":"firebase-adminsdk-kxx5h@fir-30c9e.iam.gserviceaccount.com",
"scope":"https://www.googleapis.com/auth/firebase.database", //is this the correct API to access firebase database?
"aud":"https://www.googleapis.com/oauth2/v4/token",
"exp": expDate,
"iat": iatDate]
drop.get("access") { request in
var accesstoken = "ya29.ElqhA-....XXXX"
let responseFirebase = try drop.client.get("https://fir- 30c9e.firebaseio.com/data/Users.json",
headers: ["Authorization":"Bearer \(accesstoken)"],
query: [:])
print("FirebaseResponse_is \(responseFirebase)")
return "success" …Run Code Online (Sandbox Code Playgroud) 我想创建使用Python脚本调用REST API GCP服务帐户,然后赋予它特定的角色-理想一些的这些,比如roles/logging.logWriter。
首先,我请求创建一个工作正常的帐户,我可以在控制台/IAM 中看到该帐户。
其次,我想给它这个角色,这似乎是正确的方法。但是,它不接受roles/logging.logWriter,说 HttpError 400,"Role roles/logging.logWriter is not supported for this resource.">
相反,如果我在控制台中设置了所需的策略,然后尝试该getIamPolicy方法(使用 gcloud 工具),我得到的只是 response etag: ACAB,没有提及我设置的实际角色。因此我认为这些角色指的是不同的东西。
知道如何使用 API 为服务帐户编写角色/范围的脚本吗?
我有一个桌面应用程序,通过REST接口使用GMAIL API读取邮件.我想使用服务帐户,以便我们可以使用域设置下载邮件,用户交互为空.我已成功创建Gmail服务实例,但当我尝试访问任何Gmail API方法(如提取邮件列表或其他任何内容)时,我会收到例外说法
Google.Apis.Auth.OAuth2.Responses.TokenResponseException:错误:"access_denied",说明:"请求的客户端未经授权."
我完成了开发人员控制台的所有设置,并将范围添加到我的gapps域.
Gmail API是否支持服务帐户?使用相同的设置和服务帐户,我可以使用云服务和API获取Google云端硬盘中所有文件的列表.
我们可以与服务帐户共享 BigQuery 数据集,我们可以通过为服务帐户分配特定角色来将服务帐户作为成员添加到特定存储桶......使用图形界面。
火力商店怎么样?我们可以与服务帐户共享特定的集合吗?我在网络界面中找不到任何这样的选项..
备注:我无权向服务帐户授予全局权限,但我有权向资源添加成员并授予他们对该特定资源的角色。
谢谢你!
service-accounts firebase-security google-iam google-cloud-firestore
我想允许用户模拟服务帐户来对长时间运行的进程执行操作。但是,所有代码示例都说明了一个服务帐户模拟另一个服务帐户。
用户可以直接冒充服务帐号吗?如果是这样,怎么办?
我正在遵循这个示例代码。
初始化一个无权访问列表桶的源凭证:
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
我想使用服务帐户通过Apps脚本执行API访问Google表格,但是文档中是否支持这一点并不清楚.
我尝试过的步骤(导致Execution API的403状态)是:
这是我得到的回应:
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为服务帐户永远无法访问Execution API吗?或者上面的步骤有问题吗?
我在使用Google Drive API,服务帐户和身份验证时遇到了一些问题.我读了很多,但我无法弄清楚如何解决这个问题.
上下文:我的云端硬盘帐户上有一些文件(约35GB)和一个简单的网络应用程序,用户可以登录,查看我的驱动器中的一些选定的文件夹/文件,并在需要时下载它们.唯一可以直接访问我的云端硬盘帐户的是(或应该是)我的服务器,用户通过网络应用/服务器进行操作.
经过一番搜索,我找到了服务器到服务器的授权文档,这些文档应该是完美的,但我可以看到,服务帐户不共享相同的驱动器空间:它们有自己的,并且不可升级.由于这个(奇怪的)限制我不能使用服务帐户,因为我有超过35GB,我需要"分享"一切.
其他方式:使用"标准"OAuth以获取访问令牌,然后使用它来调用Drive API,但访问令牌有一个过期日期,我无法每次手动更新它.
所以,第一个问题:有没有办法增加服务帐户的配额?如果没有,是否有办法使用我的"普通"帐户(所有者)充当服务帐户?
第二个(虚拟)问题:我阅读了有关创建新OAuth凭据的文档,最后您获得了一些示例代码和"client-secret"JSON.我运行示例但我不明白该JSON文件的作用是什么:我必须登录并给予许可,我为什么需要它?
第三个(虚拟的)问题:如果OAuth是唯一的解决方案,是否有办法获取/刷新访问令牌而不是每次都手动执行?我查看了OAuth文档,"用户交互/确认"是auth流程中的基本内容之一,所以我认为不可能.
我想在没有用户参与的情况下自动将视频上传到YouTube,所以我创建了一个服务帐户,跳过了箍,一切看起来很棒,然后尝试上传,一个块,并且我的代码遭到了这个Google_Exception异常的爆炸:
"无法启动可恢复上传(HTTP 401:youtube.header,Unauthorized)"
然后我在YouTube API v3上挖掘并找到错误信息:
https://developers.google.com/youtube/v3/docs/errors
"如果您尝试使用OAuth 2.0服务帐户流程,则会出现此错误.YouTube不支持服务帐户,如果您尝试使用服务帐户进行身份验证,则会收到此错误."
它是否正确?我无法使用服务帐户自动将视频上传到YouTube?
(这是浪费了几天努力工作!)
如何使用普通的网络用户界面登录Google服务帐户,例如google drive?
现在我只能使用脚本使用API登录.
oauth google-api google-drive-api google-oauth service-accounts
我在我的本地计算机上写了一个火花作业,它使用google hadoop连接器从谷歌云存储中读取文件,如gs://storage.googleapis.com/,如https://cloud.google.com/dataproc/docs/中所述连接器/云的存储
我已经设置了具有计算引擎和存储权限的服务帐户.我的火花配置和代码是
SparkConf conf = new SparkConf();
conf.setAppName("SparkAPp").setMaster("local");
conf.set("google.cloud.auth.service.account.enable", "true");
conf.set("google.cloud.auth.service.account.email", "xxx-compute@developer.gserviceaccount.com");
conf.set("google.cloud.auth.service.account.keyfile", "/root/Documents/xxx-compute-e71ddbafd13e.p12");
conf.set("fs.gs.project.id", "xxx-990711");
conf.set("fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem");
conf.set("fs.AbstractFileSystem.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem");
SparkContext sparkContext = new SparkContext(conf);
JavaRDD<String> data = sparkContext.textFile("gs://storage.googleapis.com/xxx/xxx.txt", 0).toJavaRDD();
data.foreach(line -> System.out.println(line));
Run Code Online (Sandbox Code Playgroud)
我已经设置了名为GOOGLE_APPLICATION_CREDENTIALS的环境变量,该变量指向密钥文件.我尝试过使用两个密钥文件,即json和P12.但无法访问该文件.我得到的错误是
java.net.UnknownHostException: metadata
java.io.IOException: Error getting access token from metadata server at: http://metadata/computeMetadata/v1/instance/service-accounts/default/token
at com.google.cloud.hadoop.util.CredentialFactory.getCredentialFromMetadataServiceAccount(CredentialFactory.java:208)
at com.google.cloud.hadoop.util.CredentialConfiguration.getCredential(CredentialConfiguration.java:70)
Run Code Online (Sandbox Code Playgroud)
我正在使用java 8,spark 2.2.0依赖项和gcs-connector 1.6.1.hadoop2从eclipse运行我的工作.我只需要使用服务帐户连接,而不是通过OAuth机制连接.
提前致谢
java google-cloud-storage service-accounts apache-spark google-cloud-dataproc
service-accounts ×10
google-oauth ×3
google-iam ×2
amazon-iam ×1
apache-spark ×1
c# ×1
firebase ×1
gmail-api ×1
google-api ×1
java ×1
oauth ×1
rest ×1
vapor ×1
youtube-api ×1