4

gdata-pyton-clientを使用しています。アプリの「認証コード」を取得しました。しかし今何?どうすればブロガーに投稿できますか?

次のコードを使用して、認証コードを取得しました。

CLIENT_ID = 'my-client-id'
CLIENT_SECRET = 'my-secret'

SCOPES = ['https://www.googleapis.com/auth/blogger']  
USER_AGENT = 'my-app'

token = gdata.gauth.OAuth2Token(
                                client_id=CLIENT_ID, client_secret=CLIENT_SECRET, scope=' '.join(SCOPES),
                                user_agent=USER_AGENT)

print token.generate_authorize_url(redirect_url='urn:ietf:wg:oauth:2.0:oob')
print token.get_access_token(TOKEN-THAT-I-GOT-FROM-ABOVE-URL)

しかし、今はどのように使用しますか?

ブロガーに投稿するために、ブロガーを承認するにはどうすればよいですか?私はテスト目的でこの例を使用しています: https ://code.google.com/p/gdata-python-client/source/browse/samples/blogger/BloggerExampleV1.py

しかし、これはログインに電子メールとパスワードを使用しています。アクセストークンはどのように使用できますか?

4

2 に答える 2

1

トークンの使用方法を説明しているこのドキュメント ページ、特に最後の例を参照してください。

# Find a token to set the Authorization header as the request is being made
token = self.token_store.find_token(url)
# Tell the token to perform the request using the http_client object
# By default, the http_client is an instance of atom.http.HttpClient which uses httplib to         make requests
token.perform_request(self.http_client, 'GET', url, data=None, headers)
于 2013-02-22T15:58:09.610 に答える
1

以下の解決策を試すことができます。

以下のすべてのインポートがあることを確認してください。

from apiclient.discovery import build
from oauth2client.file import Storage
from oauth2client.client import AccessTokenRefreshError
from oauth2client.client import flow_from_clientsecrets
from oauth2client.tools import run

このようにclient_secrets.JSONをセットアップします

次のようにclient_secrets.jsonをセットアップします

{
  "web": {
    "client_id": "[[INSERT CLIENT ID HERE]]",
    "client_secret": "[[INSERT CLIENT SECRET HERE]]",
    "redirect_uris": [],
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://accounts.google.com/o/oauth2/token"
  }
}

後で参照できるように、資格情報をファイルに保存blogger.datして処理を高速化できます

FLOW = flow_from_clientsecrets(Path_to_client_secrets.json,scope='https://www.googleapis.com/auth/blogger',message=MISSING_CLIENT_SECRETS_MESSAGE)

storage = Storage('blogger.dat')
credentials = storage.get()
if credentials is None or credentials.invalid:
    credentials = run(FLOW, storage)

資格情報がすべて設定されたら。投稿する時間です!そのため、httplib2.Http オブジェクトを作成して HTTP リクエストを処理し、適切な資格情報で承認します。

http = httplib2.Http()
http = credentials.authorize(http)

service = build("blogger", "v2", http=http)

完了したら、ブログの本文と投稿を作成します

try:
    body = {
        "kind": "blogger#post",
        "id": "6814573853229626501",
        "title": "posted via python",
        "content":"<div>hello world test</div>"
        }

    request = service.posts().insert(your_blogId_ID,body)

    response = request.execute()
    print response

  except AccessTokenRefreshError:
    print ("The credentials have been revoked or expired, please re-run the application to re-authorize")

お役に立てれば。

于 2013-03-01T10:08:49.743 に答える