简短问题:
2015年4月20日发布后,是否有人使用Google Custom Search Api进行身份验证的工作解决方案?
更长的版本:
我正在尝试使用Google Custom Search Api来请求按需索引。 在我开始之前,我遇到了身份验证问题。 根据{{3}},您应该使用ClientLogin Api进行身份验证。 这个Api于2015年4月20日关闭,当你尝试从中获取令牌时它现在返回404.
ClientLogin documentation上的弃用通知声明使用Oauth。
因此,我试图验证与Hossein documentation几乎相同的身份验证 我收到了来自Google的持票人令牌,但是当我尝试提出请求时,我收到了一封带有以下消息的401
<Error>You are not authorized to access this resource. If you feel this is an error, try re-logging into your Google Account.</Error>
这并不奇怪,因为没有最新的文档,我一直在试图寻找正确的解决方案。[/ p>
我目前在C#中的代码:
private static async Task Run()
{
var credential = new ServiceAccountCredential( new ServiceAccountCredential.Initializer("blablabla@developer.gserviceaccount.com")
{
Scopes = new[] { "https://www.googleapis.com/auth/cse" }
}.FromPrivateKey("-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----\n"));
await credential.RequestAccessTokenAsync(CancellationToken.None);
var token = credential.Token;
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.AccessToken);
var content =
new StringContent(
@"<?xml version=""1.0"" encoding=""UTF-8""?><OnDemandIndex><Pages><Page url=""http://url.com/to/be/indexed"" /></Pages></OnDemandIndex>");
content.Headers.ContentType = new MediaTypeHeaderValue("text/xml");
var result = await client.PostAsync("http://www.google.com/cse/api/{user_id}/index/{CSE_Id}", content);
var resultContent = await result.Content.ReadAsStringAsync();
Console.WriteLine(resultContent);
}
是否有人运行的解决方案可以解决www.google.com/cse/api/...
端点问题?
任何语言都会有用,只是为了知道它确实有效。