2013-02-19 7 views
4

Я использую gdata-pyton-client. У меня есть «Код авторизации» для моего приложения. Но что теперь? Как я могу использовать его для публикации в блогере?У меня есть «Код авторизации» для моего приложения. Но как я могу использовать его для публикации в блогере с помощью gdata-python-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

Но это с помощью электронной почты & пароль для входа в систему. Как я могу использовать токен доступа?

ответ

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") 

надеюсь, что это помогает.

+0

Спасибо Трэвис, я попробую это и дам вам знать результаты. –

+0

Это сработало для вас? –

1

См this documentation page инструктажа вам, как использовать маркеры, в частности, например, в конце:

# 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) 
+0

jknupp, спасибо за этот пример, но я очень новичок в программировании на Python, и это мой первый опыт работы с GData. Я до сих пор не понял, как авторизовать клиента, чтобы он мог опубликовать блоггер ... –