1

我正在創建一個簡單的應用程序在谷歌appengine自動發佈內容在我的blogspot。谷歌服務帳戶代表團

我已經創建了服務帳戶並嘗試使用下面的代碼來調用博客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帳戶)。我如何實現這一目標?

回答

0

Blogger不支持服務帳戶。你將需要使用Oauth2。一旦存儲了刷新令牌,然後使用刷新令牌根據需要獲取新的訪問令牌,即可驗證您的代碼。

+0

感謝您的輸入。最初,我嘗試使用OAuth 2.0令牌,對我的代碼進行身份驗證並獲得了刷新令牌。我能夠訪問博客API。但在某些時候,如果我以相同的標記訪問APi,它會指示我登錄到Google帳戶以生成新令牌。我如何再次使用相同的令牌來獲取新的訪問令牌?我計劃安排一個博客帖子的cron工作。任何文檔或示例代碼都可以幫助我。 – user1260969

+0

python客戶端庫應該處理獲取新的訪問令牌。 Refreshtoken可能會過期,您只需重新授權即可。注意:這是你使用oauth2工作代碼的唯一選擇 – DaImTo