40615


認証情報でサービス アカウント キーのjsonファイル使ってやってみたけど、We're sorry, but you don't have
permission to access this resourceが帰ってくる。

[code]

    # -*- coding: utf-8 -*-
    from googleapiclient.discovery import build
    from oauth2client.service_account import ServiceAccountCredentials
    from httplib2 import Http
    
    class BloggerV3GAE:
        def get_service(self):
    
            scopes = ['https://www.googleapis.com/auth/blogger']
            credentials = ServiceAccountCredentials.from_json_keyfile_name('サービス アカウントのjsonファイル', scopes)
            http_auth = credentials.authorize(Http())
            self.service = build('blogger', 'v3', http=http_auth)
    
        def post(self,blogid,title,tag,lbl):
            posts = self.service.posts()
            body = {
                "kind": "blogger#post",
                "id": blogid,
                "title": title,
                "content": tag,
                "labels": lbl
            }
            insert = posts.insert(blogId=blogid, body=body)
            posts_doc = insert.execute()
            return posts_doc
    
        def detaif(self,blogid):
            blogs = self.service.blogs()
            blog_get_obj = blogs.get(blogId=blogid)
            details = blog_get_obj.execute()
            return details
    
    if __name__ == '__main__':
        blogger = BloggerV3GAE()
        blogger.get_service()
        lbl = ["ラベル"]
        details = blogger.post("ブログID","タイトル","記事",lbl)
        print details
    
[/code]


CC BY-SA 3.0
2017-12-28T01:14:39.803
40570
2017-12-30T00:37:58.880
26815
question
python google-app-engine
GAEでBlogger API v3を使い、cronを使い自動で記事を投稿する方法ってないのでしょうか？


Blogの所有者は自分のGoogle Accountになり、Service Accountは権限を持っていないので、アクセスできません。  
そのため、 `We're sorry, but you don't have permission to access this resource`
と言われています。

Blogger, Calendar, MailなどをAPIを実行する場合は、所有者のGoogle Accountで認可を行い、Access
Tokenを発行する必要があります。また、今回のcronで定期実行したいという要件の場合は、Access Tokenの更新をApp
Engineに自動で行ってほしいので、Refresh Tokenを渡しておく必要があります。App Engineの場合は、Cloud
DatastoreにRefresh Tokenを保存しておけば、DataBaseを用意する必要が無いので、楽ですね。

認証/認可のドキュメントは以下です。  
<https://developers.google.com/blogger/docs/3.0/using#auth>


CC BY-SA 3.0
2017-12-30T00:37:58.880
40615
2017-12-30T00:37:58.880
4361
40570
answer