所以,这里有3个步骤。
我用以下网址调用了oAuth2:
https://accounts.google.com/o/oauth2/v2/auth
?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fwebmasters%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fwebmasters.readonly
&client_id=___.apps.googleusercontent.com
&redirect_uri=urn:ietf:wg:oauth:2.0:oob
&response_type=code
&approval_prompt=force
&access_type=offline
我得到了代码,假设:4/QVgPaCMqp94____qBC4NY_d54IcRj7U9mJc
然后我通过https://accounts.google.com/o/oauth2/token
,client_id
,client_secret
,redirect_uri
向grant_type
发出POST请求来发出access_token请求,我得到一个JSON,如:
'access_token' => ya29.CjHzAgC4js6Guv-1pt_rE____q8XIxiXOXOaSZW9NLRjKCTI3izBi,
'expires_in' => 3600,
'refresh_token' => 1/dL3ENA-EVI0rEb6D-OGqw_____iFe2ZNdEq4,
现在,我正在使用access_token发出请求,或者在过期的情况下向Google Search Console重新发送access_token,我已在范围内添加了该请求。
我的请求与此类似:https://developers.google.com/webmaster-tools/v3/urlcrawlerrorssamples/list#try-it
但是我得到了一个401未经授权的错误,json就像下面这样:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
考虑到我已经正确完成了这个过程,我想我错过了一些参数或提供了一些错误的值。
我没有使用过Google Client Library,而是直接使用了REST API框架。
有人可以提供一些线索吗?谢谢。
答案 0 :(得分:0)
原因是,网址查询参数必须为?access_token=
而不是?key=
后者只能在直接API访问的情况下使用,而不能用于oAuth。