का उपयोग कर Google एपीआई उदाहरण के लिए ओथ, मैं ओथ को पाइथन का उपयोग करके Google एपीआई के साथ काम करने की कोशिश कर रहा हूं। मैंने विभिन्न oauth पुस्तकालयों जैसे oauth, oauth2 और djanog-oauth की कोशिश की है, लेकिन मैं इसे काम करने के लिए नहीं मिला (प्रदान किए गए उदाहरणों सहित)।पायथॉन/डीजेगो
Oauth डिबगिंग के लिए मैं गूगल के Oauth Playground का उपयोग करें और मैं API और Oauth documentation
कुछ पुस्तकालयों मैं एक सही हस्ताक्षर हो रही के साथ संघर्ष कर रहा हूँ के साथका अध्ययन किया है, अन्य पुस्तकालयों मैं एक अधिकृत करने के लिए अनुरोध टोकन परिवर्तित करने के साथ संघर्ष कर रहा हूँ के साथ टोकन। अगर कोई मुझे ऊपर बताए गए पुस्तकालयों में से किसी एक का उपयोग करके Google एपीआई के लिए एक कामकाजी उदाहरण दिखा सकता है तो वास्तव में मेरी क्या मदद करेगा।
संपादित करें: मेरा प्रारंभिक प्रश्न किसी भी उत्तर का कारण नहीं बनता है इसलिए मैंने अपना कोड जोड़ा है। इस कोड के दो संभावित कारण काम नहीं कर रहे हैं:
1) Google मेरे अनुरोध टोकन को अधिकृत नहीं करता है, लेकिन यह सुनिश्चित नहीं है कि इस
2 का पता कैसे लगाएं) एक्सेस टोकन के लिए यह हस्ताक्षर अमान्य है लेकिन फिर मैं जानना चाहता हूं कौन सा ओथ पैरामीटर Google उम्मीद कर रहा है क्योंकि मैं पहले चरण में उचित हस्ताक्षर उत्पन्न करने में सक्षम हूं।
यह oauth2.py और Django के लिए लिखा जाता है इसलिए HttpResponseRedirect।
REQUEST_TOKEN_URL = 'https://www.google.com/accounts/OAuthGetRequestToken'
AUTHORIZATION_URL = 'https://www.google.com/accounts/OAuthAuthorizeToken'
ACCESS_TOKEN_URL = 'https://www.google.com/accounts/OAuthGetAccessToken'
CALLBACK = 'http://localhost:8000/mappr/mappr/oauth/' #will become real server when deployed
OAUTH_CONSUMER_KEY = 'anonymous'
OAUTH_CONSUMER_SECRET = 'anonymous'
signature_method = oauth.SignatureMethod_HMAC_SHA1()
consumer = oauth.Consumer(key=OAUTH_CONSUMER_KEY, secret=OAUTH_CONSUMER_SECRET)
client = oauth.Client(consumer)
request_token = oauth.Token('','') #hackish way to be able to access the token in different functions, I know this is bad, but I just want it to get working in the first place :)
def authorize(request):
if request.GET == {}:
tokens = OAuthGetRequestToken()
return HttpResponseRedirect(AUTHORIZATION_URL + '?' + tokens)
elif request.GET['oauth_verifier'] != '':
oauth_token = request.GET['oauth_token']
oauth_verifier = request.GET['oauth_verifier']
OAuthAuthorizeToken(oauth_token)
OAuthGetAccessToken(oauth_token, oauth_verifier)
#I need to add a Django return object but I am still debugging other phases.
def OAuthGetRequestToken():
print '*** OUTPUT OAuthGetRequestToken ***'
params = {
'oauth_consumer_key': OAUTH_CONSUMER_KEY,
'oauth_nonce': oauth.generate_nonce(),
'oauth_signature_method': 'HMAC-SHA1',
'oauth_timestamp': int(time.time()), #The timestamp should be expressed in number of seconds after January 1, 1970 00:00:00 GMT.
'scope': 'https://www.google.com/analytics/feeds/',
'oauth_callback': CALLBACK,
'oauth_version': '1.0'
}
# Sign the request.
req = oauth.Request(method="GET", url=REQUEST_TOKEN_URL, parameters=params)
req.sign_request(signature_method, consumer, None)
tokens =client.request(req.to_url())[1]
params = ConvertURLParamstoDictionary(tokens)
request_token.key = params['oauth_token']
request_token.secret = params['oauth_token_secret']
return tokens
def OAuthAuthorizeToken(oauth_token):
print '*** OUTPUT OAuthAuthorizeToken ***'
params ={
'oauth_token' :oauth_token,
'hd': 'default'
}
req = oauth.Request(method="GET", url=AUTHORIZATION_URL, parameters=params)
req.sign_request(signature_method, consumer, request_token)
response =client.request(req.to_url())
print response #for debugging purposes
def OAuthGetAccessToken(oauth_token, oauth_verifier):
print '*** OUTPUT OAuthGetAccessToken ***'
params = {
'oauth_consumer_key': OAUTH_CONSUMER_KEY,
'oauth_token': oauth_token,
'oauth_verifier': oauth_verifier,
'oauth_token_secret': request_token.secret,
'oauth_signature_method': 'HMAC-SHA1',
'oauth_timestamp': int(time.time()),
'oauth_nonce': oauth.generate_nonce(),
'oauth_version': '1.0',
}
req = oauth.Request(method="GET", url=ACCESS_TOKEN_URL, parameters=params)
req.sign_request(signature_method, consumer, request_token)
response =client.request(req.to_url())
print response
return req
def ConvertURLParamstoDictionary(tokens):
params = {}
tokens = tokens.split('&')
for token in tokens:
token = token.split('=')
params[token[0]] = token[1]
return params
धन्यवाद !!! यह मेरा दिन बचाओ !!! – VHanded