我遇到了谷歌播放开发者控制台的问题.很久以前我被邀请在控制台中共享帐户,但现在当我尝试查看此帐户时,我收到一条消息"开发者帐户无效",但此帐户位于我的"共享帐户"列表中.所以问题是,如何离开这个帐户?
在 Google 上注册新的 oauth 客户端时,其 oauth 同意屏幕需要私有策略 url、应用主页 url 和授权 url。我正在 localhost 上开发如何获取它们
因此,使用日历 API 从公开可用的 Google 日历中提取所有事件。
这一直工作到今天早上。
由于我没有更新或进行任何数据更改,我们已经实现了一个 API 密钥来访问只读数据,如下所示:
https://www.googleapis.com/calendar/v3/calendars/[calendar ID]/events?timeZone=EDT&timeMin=2020-06-30T04:00:00.000Z&maxResults=6&singleEvents=true&orderBy=startTime&key=[API key]
Run Code Online (Sandbox Code Playgroud)
昨天拉好了,今天回来了:
代码:401 消息:凭据无效
对此有何想法?它影响了这个日历代码的几个实现(不同的键、域等),但具有相同的基本方法。
我还没有实现 gapi 客户端 javascript 库,现在可以开始研究了。
有人可以用简单的语言向我解释一下这些配额是如何运作的吗?
我知道哪里有类似的问题,但我想要与下面的屏幕截图相关的解释。
首先,我在 Google Dev Console 中打开 YouTube API 的配额页面。
但我不明白这些线是什么以及它们是如何工作的,为什么有几条线?
例如,我试图提出一个像这样的简单请求
https://www.googleapis.com/youtube/v3/search?part=snippet&q=welcome&type=playlist&key=[MY_API-KEY]
Run Code Online (Sandbox Code Playgroud)
这会返回一个 json 响应:
{
"error": {
"code": 403,
"message": "The request cannot be completed because you have exceeded your \u003ca href=\"/youtube/v3/getting-started#quota\"\u003equota\u003c/a\u003e.",
"errors": [
{
"message": "The request cannot be completed because you have exceeded your \u003ca href=\"/youtube/v3/getting-started#quota\"\u003equota\u003c/a\u003e.",
"domain": "youtube.quota",
"reason": "quotaExceeded"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我认为它给了我一个错误,因为某个地方的配额=零,因为我只尝试发出此请求一次。
我应该怎样做才能消除这个错误并能够使用 API?
谢谢。
google-api youtube-api youtube-data-api google-developers-console
我有以下Json
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
Run Code Online (Sandbox Code Playgroud)
我所试图做的是增加一个新的JToken在 "message": "Login Required"像 "RetryMessage": "Failed after 10 retries"
我发现了这个如何将一个JToken添加到JObject?我认为这不是很有效,因为错误是一个令牌,而不是一个对象,但我不确定.
我尝试过的:
var JsonObj = JObject.Parse(response);
var RetryMessageJson = JToken.Parse(@"{ ""RetryMessage"" : ""UnKnown""}");
JsonObj["error"]["message"].AddAfterSelf(RetryMessageJson);
Run Code Online (Sandbox Code Playgroud)
我已经尝试了上面的几个版本的代码,他们都回来了以下错误消息:
Newtonsoft.Json.Linq.JProperty cannot have multiple values.
Run Code Online (Sandbox Code Playgroud) 我一直关注Googles网站上的Oauth2服务帐户文档.我也一直在挑选Googles .net客户端库,试图让它工作.
我已经达到了计算机的签名阶段.
Google的隐私密钥如下所示
-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDcmuyQC8rwWdPQ\nmIdksgzSJbVWTU5MeUxy+HAap3yut9wR/L6KGMJ4FBYcsPmXN5gQAhErybavGoZG\nfS1X1/PCpPVpTCA4749K8gbvuZg1JEIAqMtmHiBBrJj5l8eiekQc8pd7Pq35H4wi\nJYXAJGwggPcttkLBRi0xZzd+jdwL1st+7zRt8nMao/xFibInBBvKwb/gP4mJxlQg\nnRdGO6zgMk+PLTcA5C+gFyPA4SdkylrLib5CJO9123FgcfTJZJTukeHo1v0EfU+4\n3bK8HBZnOFa4DHH4mXhkhgYMjibv4Sr/WCEoomJJwNN04SbUEdyhgpM2rZ3cvx+4\nsmB0SQflAgMBAAECggEAXZ100+/dL7++zh9cHVQdcrRDzprBplw3H/bjg7wdgftN\n7Wgm5214YQKNG6HSWORjqC9oX/+agZYs8w69xjBDJg9ggU2nwuGOGky4utQ0jiCT\nzbnTjsMsBxKaXBiXxBBEhVBBDjDcHQLRMdBggNgz9lskCYb1rxT7qqJVf2PtxCuZ\nuxw3whLMRHXvKosER12sMQgGB/0+Nk86GWCqPigpfu7Ec92V0ffcSUaq3gjIUD54\n67TduTWaRDQNB+j2yQsWQZnqRv+TvIXOjinAI+pPbvCUovtiTSZAoz3EalsiXQ0l\nUqDVx26uzEJqhB2kzvAeApuW2Nd5EPxUnf48c4xh4QKBgQDw01mEChWyENV5CBKU\nMSfY0rpAPtq7ahHRR458ZKtITDBlqiZLMjydI65Rr1XxpQ3pJZALObMdUhbvCDfm\nu4BY/lCCt+hcdt9IICvVZsgXgvb6M+Fj2IbYZcAnOm4T1Z1D3I+pW5NdK2ALQRiK\nWsGINOqWCB9WRd7nhmb/XwWyjQKBgQDqgWht5laDuLMc4qpj9finY4qmk57eT3KG\npzbVlT3h7kv7j/j6e+6o9psrqdf1PXpu9XZi3bPtPbH1fX9x5pZgJQRMP4FGOURY\nQDkJfiOOSN/8Vl0senqkscT7DSbe2BqyqQlSlTB4BBF29p1wxb5Wz5HH2BvYE2zI\ni9B4WJcAuQKBgADnajCasRYoBgUcSKWRwaqIr/ZJxhxp+4Mjl59T6WiuEIhxKQ+j\nMqMMXT0lQVdU3UaAw5enMcrsYfWnvD37ejHbUoYLFq4yLAhjRobYieu8rByoUTJE\nv8zUJPKAv6UHaj20+D0UgOsanJOuPN9YE93lBPRnN2blgD6yPHS88JKJAoGABFyh\n16F4LH0L/9aLes6BcIOeeZi3VMU/iRelInXjL8eh7CzyYZ5agxQLMNW46ZvaIiQ4\nroAXL6t9GubZrwGt/F3T5aMswWShS87uAKoy+RuL5wKoOwKQM24HDvBgr7ZvULFq\nNfoGa8UPmhneNdHHx4+W05PGeM9rr5NCLmrfbCkCgYA0nMvEDIJvU3KA3S1cQ3fs\nVopRJwqRIFFL1cHTWaEyIsxEh6i/zAUc/habK82dN3/ZDn/XvWY14k7VZPsSdDC9\noVlQj2z8DVO2K99Oxyh0VlthtecW8exjzkIPJL4srOSl/dooQZS/7ZZyaRQU/BLI\nMdzKHlUKKXWcUU+Ko8W4+w\u003d\u003d\n-----END PRIVATE KEY-----\n
Run Code Online (Sandbox Code Playgroud)
清理钥匙
首先,我清理了一下钥匙
private const string PrivateKeyPrefix = "-----BEGIN PRIVATE KEY-----";
private const string PrivateKeySuffix = "-----END PRIVATE KEY-----";
/// <summary>Converts the PKCS8 private key to RSA parameters. This method uses the Bouncy Castle library.</summary>
private static RSAParameters ConvertPKCS8ToRSAParameters(string pkcs8PrivateKey)
{
var base64PrivateKey = pkcs8PrivateKey.Replace(PrivateKeyPrefix, "").Replace("\r\n", "").Replace(PrivateKeySuffix, "");
var privateKeyBytes = Convert.FromBase64String(base64PrivateKey);
RsaPrivateCrtKeyParameters crtParameters = (RsaPrivateCrtKeyParameters)PrivateKeyFactory.CreateKey(privateKeyBytes);
return DotNetUtilities.ToRSAParameters(crtParameters);
}
Run Code Online (Sandbox Code Playgroud)
导入参数
RSAParameters rsaParameters = ConvertPKCS8ToRSAParameters(results.private_key);
RSACryptoServiceProvider key …Run Code Online (Sandbox Code Playgroud) 我正在使用 YouTube 数据 API 开展一个项目。我正在运行的 Python 脚本使用客户端机密 JSON 文件,我认为该文件用于验证帐户所有者。
如果我遇到问题并需要帮助,公开分享是否有任何安全问题?如果它私下保存在私人 github 存储库中,它甚至可以吗?
间歇性地收到此错误
请求https://www.googleapis.com/discovery/v1/apis/gmail/v1/rest时的 HttpError 403返回“调用方没有权限”
它有时有效,有时则无效。我在 oauth2 操场上看到了同样的问题
这是我的代码 -
googlecredentials = GoogleCredentials(
access_token=None,
client_id='xxx',
client_secret='xxxx',
refresh_token='xxxx',
token_expiry=None,
token_uri="https://www.googleapis.com/oauth2/v3/token",
user_agent='Python client library'
)
service = build('gmail', 'v1', credentials=googlecredentials)
results = service.users().labels().list(userId='me').execute()
labels = results.get('labels', [])
response = service.users().messages().list(userId='me', q='subject:FDA').execute()
print(response)
Run Code Online (Sandbox Code Playgroud) python oauth2-playground google-oauth google-api-python-client gmail-api
我试图弄清楚如何序列化为 json 对象并跳过序列化值为空列表的属性。 我没有使用 Newtonsoft json
using System.Text.Json;
using System.Text.Json.Serialization;
using AutoMapper;
Run Code Online (Sandbox Code Playgroud)
我有一个带有属性的对象。
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
[JsonPropertyName("extension")]
public List<Extension> Extension { get; set; }
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下命令序列化该对象时
var optionsJson = new JsonSerializerOptions
{
WriteIndented = true,
IgnoreNullValues = true,
PropertyNameCaseInsensitive = true,
};
var json = JsonSerializer.Serialize(report, optionsJson);
Run Code Online (Sandbox Code Playgroud)
它仍然给我一个空数组:
"extension": [],
Run Code Online (Sandbox Code Playgroud)
有没有办法阻止它序列化这些空列表?我愿意看到extension消失。它根本不应该存在。我需要这样做,因为如果我发送以下内容,网关将响应错误:
"extension": null,
Run Code Online (Sandbox Code Playgroud)
序列化时它不能是对象的一部分。
我不想要这些空列表的原因是我发送到对象到空列表的第三方网关
"severity": "error", "code": "processing", "diagnostics": "数组不能为空 - 如果属性没有值,则不应存在", "location": [ "Bundle.entry[2 ].resource.extension", "第 96 行,第 23 栏"]
我试图避免对此进行某种令人讨厌的字符串替换。
google-api ×4
google-oauth ×4
c# ×3
json ×2
oauth ×2
.net-6.0 ×1
gmail-api ×1
javascript ×1
jwt ×1
python ×1
youtube-api ×1