Google服务帐户委派

时间:2016-10-25 03:57:39

标签: python google-app-engine blogger google-api-python-client service-accounts

我正致力于在google appengine中创建一个简单的应用,以自动在我的blogspot上发布内容。

我创建了服务帐户,并尝试使用以下代码调用blogger api发布博客。这个没有运行权限不足的错误消息。

urlfetch.set_default_fetch_deadline(45)
service = build('blogger', 'v3')

class MainHandler(webapp2.RequestHandler):
    def post(self):
            body = {
            "kind": "blogger#post",
            "id": "9999999999999999",
            "title": "SAmple title",
            "content": "SAmple blog contents"
            }
            scopes = ['https://www.googleapis.com/auth/blogger']
            credentials = ServiceAccountCredentials.from_json_keyfile_name('secret-key.json', scopes=scopes)
            http_auth     = credentials.authorize(Http())
            request = service.posts().insert(blogId="9999999999999999",body=body)
            response = request.execute(http=http_auth)
            self.response.out.write(pprint.pformat(response))

app = webapp2.WSGIApplication([
    ('/postcontents', MainHandler)
], debug=True)

但是,我可以通过以下行访问博客详情

self.response.write(blogs.get(blogId='9999999999999999').execute(http=http_auth))

好像我的服务帐户与我的博客帐户无关(尽管我的谷歌应用引擎和博客都使用相同的Gmail帐户)。我怎么做到这一点?

1 个答案:

答案 0 :(得分:0)

Blogger不支持服务帐户。您将需要使用Oauth2。验证您的代码一旦存储刷新令牌包含您的代码,然后使用刷新令牌根据需要获取新的访问令牌。