1

私は、Google App Engineで簡単なアプリを作成して、自分のblogspotにコンテンツを自動的に投稿しています。Googleサービスアカウント委任

私はサービスアカウントを作成し、ブログを投稿するためにblogger apiを呼び出すために以下のコードを使用しようとしています。これは不十分な特権のエラーメッセージで実行に失敗します。

私は私のGoogleのApp Engineとブロガーの両方が同じGmailアカウントを使用していますけれども、私のサービスアカウントが(私のブロガーのアカウントに関連付けられていないように思えライン

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

以下でブログの詳細情報にアクセスすることができますしかし

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) 

)。どのように私はこれを達成するのですか?

答えて

0

Bloggerはサービスアカウントをサポートしていません。 Oauth2を使用する必要があります。あなたのコードを認証します。リフレッシュトークンを保存したらコードを取得し、リフレッシュトークンを使用して必要に応じて新しいアクセストークンを取得します。

+0

入力いただきありがとうございます。最初は、OAuth 2.0トークンで試してみました。自分のコードを認証し、更新トークンを取得しました。私はブロガーAPIにアクセスできました。しかし、いつか同じトークンでAPiにアクセスすると、新しいトークンを生成するためにGoogleアカウントにログインするよう指示されています。新しいアクセストークンを取得するために同じトークンを再び使用するにはどうすればよいですか?私はブログ投稿用のcronジョブを予定しています。どのような文書やサンプルコードでも私は助けになるでしょう。 – user1260969

+0

pythonクライアントライブラリは、新しいアクセストークンの取得を処理する必要があります。 Refreshtokenは期限切れになります。再承認する必要があります。注:これは、oauth2を使用している作業コードがある唯一のオプションです。 – DaImTo