0

我想获得谷歌搜索控制台的网站。

我正在起诉代码:

from google.oauth2.credentials import Credentials
from googleapiclient import discovery

class GoogleSearchConsoleApiClient():
    SCOPES = ['https://www.googleapis.com/auth/webmasters.readonly']
 
    def __init__(self):
        pass

    def get_sites(self, creds):
        try:
            service = discovery.build('searchconsole', 'v1', credentials=creds, cache_discovery=False)
            site_list = service.sites().list().execute()
            print(site_list)
        except Exception as e:
            raise e
        return url

    def execute(self):
        credentials = {
            "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
            "auth_uri": "https://accounts.google.com/o/oauth2/auth",
            "client_email": "XXXXX",
            "client_id": "XXXXX",
            "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/XXXX",
            "owner": "XXX",
            "private_key": "XXX",
            "private_key_id": "XX",
            "project_id": "XXX",
            "token_uri": "https://oauth2.googleapis.com/token",
            "type": "service_account"
        }
        credentials = Credentials.from_authorized_user_info(credentials, scopes=self.SCOPES)
        sites_list = self.get_sites(credentials)
        return sites_list


if __name__ == '__main__':
    a = GoogleSearchConsoleApiClient().execute()
    print(a)

运行代码时,出现异常:

credentials = Credentials.from_authorized_user_info(credentials, scopes=self.SCOPES)

错误:

File "/Users/j/venv/lib/python2.7/site-packages/google/oauth2/credentials.py", line 231, in from_authorized_user_info
    "fields {}.".format(", ".join(missing))
ValueError: Authorized user info was not in the expected format, missing fields client_secret, refresh_token

.

是否有任何授权方式可以使用给定的凭据?

4

1 回答 1

2

身份验证详细信息似乎是服务帐户。为此,您需要使用如下所示的服务帐户授权。

from google.oauth2 import service_account
auth_credentials = service_account.Credentials.from_service_account_info(credentials)

您可以将 传递auth_credentials给服务。

于 2021-10-13T10:03:21.997 回答