У меня возникли трудности с доступом к ресурсам через OAuth на AppEngine.oauth on appengine: проблема с доступом
Мое Клиентское приложение (на Linux с помощью питона-OAuth) имеет возможность получить правильный «маркер доступа», но когда я пытаюсь получить доступ к защищенному ресурсу (например user = oauth.get_current_user()
), я получаю исключение oauth.OAuthRequestError
брошенного.
headers: {'Content-Length': '21', 'User-Agent': 'musync,gzip(gfe),gzip(gfe)', 'Host': 'services.systemical.com', 'X-Google-Apps-Metadata': 'domain=systemical.com', 'X-Zoo': 'app-id=services-systemical,domain=systemical.com', 'Content-Type': 'application/json', 'Authorization': 'OAuth oauth_nonce="03259912", oauth_timestamp="1282928181", oauth_consumer_key="services.systemical.com", oauth_signature_method="HMAC-SHA1", oauth_version="1.0", oauth_token="1%2Fo0-tcGTfRzkkm449qVxd_8CfCvMcW_0xwL024nO3HgI", oauth_signature="2ojSK6Ws%2BvDxx3Rdlltf53hlI2w%3D"'}
Я подозреваю, что этот вопрос может быть домен связанных т.е. я использую конечную точку на services.systemical.com
в то время как я вижу, что AppEngine сообщает domain=systemical.com
для X-Google-Apps-Metadata
.
Как исправить это? Это проблема с тем, как я использую поддомены с Apps/AppEngine?
Домен "services.systemical.com" указывает (DNS CNAME) моего Appengine приложения services-systemical.appspot.com
. Домен systemical.com
связан с доменом Google Apps.
Update: Вот код клиента я использую:
class OauthClient(object):
gREQUEST_TOKEN_URL = 'OAuthGetRequestToken'
gACCESS_TOKEN_URL = 'OAuthGetAccessToken'
gAUTHORIZATION_URL = 'OAuthAuthorizeToken'
def __init__(self, server, port, base):
self.server=server
self.port=port
self.base=base
self.request_token_url=self.base+self.gREQUEST_TOKEN_URL
self.access_token_url=self.base+self.gACCESS_TOKEN_URL
self.authorize_token_url=self.base+self.gAUTHORIZATION_URL
self.connection = httplib.HTTPConnection("%s:%d" % (self.server, self.port))
def fetch_request_token(self, oauth_request):
self.connection.request(oauth_request.http_method, self.request_token_url, headers=oauth_request.to_header())
response = self.connection.getresponse()
print response.status, response.reason
print response.msg
return oauth.OAuthToken.from_string(response.read())
def fetch_access_token(self, oauth_request):
self.connection.request(oauth_request.http_method, self.access_token_url, headers=oauth_request.to_header())
response = self.connection.getresponse()
return oauth.OAuthToken.from_string(response.read())
def authorize_token(self, oauth_request):
self.connection.request(oauth_request.http_method, oauth_request.to_url())
response = self.connection.getresponse()
return response.read()
Я обновил вопрос: я использую только «заголовки» для запросов к токенам: все-таки у меня проблема. – jldupont