gpt4 book ai didi

delphi - HTTP/1.1 401 token 无效 - AuthSub token 范围错误

转载 作者:可可西里 更新时间:2023-11-01 17:16:02 27 4
gpt4 key购买 nike

我在尝试从 Google Analytics API 获取 Feed 时遇到此错误。但是,使用相同的标记,我可以从 Google Calendar 获得成功的提要。除了 feed url 之外,两者之间的代码完全相同。所以它一定与 Analytics 是 https 而 Calendar 只是 http 有关。

我已经成功创建了一个非安全的长期 token 。请求初始 token 时的范围参数:

scope=http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2F%20https%3A%2F%2Fwww.google.com%2Fanalytics%2Ffeeds

我对长期 token 的请求:

GET /accounts/AuthSubSessionToken HTTP/1.1
Authorization: AuthSub token="CP_AgsyLDxDCtpjg-f____8B"
Content-Type: application/x-www-form-urlencoded
Host: www.google.com:443
Accept: text/html, */*
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)

返回一个长期存在的 token 。将其用于 Google 日历:

GET /calendar/feeds/default/allcalendars/full HTTP/1.1
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Authorization: AuthSub token="CP_AgsyLDxCh2tmj-P____8B"
Host: www.google.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)

返回临时重定向 (302):

HTTP/1.1 302 Moved Temporarily
Expires: Sun, 01 Nov 2009 03:00:01 GMT
Date: Sun, 01 Nov 2009 03:00:01 GMT
Set-Cookie: S=calendar=mta4-_BxxANrylcSnzUatg;Expires=Mon, 01-Nov-2010 03:00:01 GMT
Location: http://www.google.com/calendar/feeds/default/allcalendars/full?gsessionid=mta4-_BxxANrylcSnzUatg

这导致成功的 Get to this:

GET /calendar/feeds/default/allcalendars/full?gsessionid=mta4-_BxxANrylcSnzUatg HTTP/1.1
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Authorization: AuthSub token="CP_AgsyLDxCh2tmj-P____8B"
Host: www.google.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)
Cookie: S=calendar=mta4-_BxxANrylcSnzUatg

但我在尝试获取 Google Analytics 提要时收到错误 401:

GET /analytics/feeds/accounts/default HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: AuthSub token="CP_AgsyLDxCh2tmj-P____8B"
Host: www.google.com:443
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Accept-Encoding: identity
User-Agent: Mozilla/3.0 (compatible; Indy Library)

我的域需要有效的 SSL 证书吗?与此抗争了数周!!!
在 Apache 中使用 Indy10 和 Delphi 2007。

请求提供一些 Delphi 代码。我在这里提供的是 GET 到 feed 的代码。我不提供获取 token 的代码,因为我认为它们很好(我能够获取日历提要)。

var
IdHTTP: TIdHTTP;
IdSSLIOHandlerSocket1: TIdSSLIOHandlerSocketOpenSSL;

begin
IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocketOpenSSL.create(nil);
IdHTTP := TIdHTTP.create(nil);
with IdSSLIOHandlerSocket1 do begin
SSLOptions.Method := sslvSSLv3;
SSLOptions.Mode := sslmUnassigned;
SSLOptions.VerifyMode := [];
SSLOptions.VerifyDepth := 2;
end;
with IdHTTP do begin
IOHandler := IdSSLIOHandlerSocket1;
ProxyParams.BasicAuthentication := False;
Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';
Request.ContentType := 'application/x-www-form-urlencoded';
request.host := 'www.google.com/analytics';
request.connection := 'keep-alive';
Request.Accept := 'text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2';
end;

idhttp.Request.CustomHeaders.Add('Authorization: AuthSub token="'+mToken+'" ');

IdHTTP.Get('https://www.google.com/analytics/feeds/accounts/default'); // results in the 401

最佳答案

花了一些时间并要求我使用 Fiddler 和 Curl php 方法。找到这一行:

Host: www.google.com:443

不能有 :443。必须是这样的:

Host: www.google.com

Indy TIdHTTP 组件在看到 https 时会自动将其附加到主机。我能绕过它的唯一方法是发布我自己的“主机”属性。

关于delphi - HTTP/1.1 401 token 无效 - AuthSub token 范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1656311/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com