环境 - Python 2.7.3,webpy。通过python oauth2库的Github api v3访问 - 重定向问题
我想为使用Python web.py的github进行简单的oauth 3方式身份验证。根据github上的基本oauth指南,我正在做这样的事情:
import web,requests
import oauth2,pymongo,json
from oauth2client.client import OAuth2WebServerFlow
urls=('/', 'githublogin',
'/session','session',
'/githubcallback','githubCallback');
class githublogin:
def GET(self):
new_url = 'https://github.com/login/oauth/authorize'
pay_load = {'client_id': '',
'client_secret':'',
'scope':'gist'
}
headers = {'content-type': 'application/json'}
r = requests.get(new_url, params=pay_load, headers=headers)
return r.content
这是送我到GH登录页面。一旦我登录--GH没有将我重定向到回调。 redirect_uri参数在github应用程序中配置。我仔细检查过,以确保这是正确的。
class githubCallback:
def POST(self):
data = web.data()
print data
def GET(self):
print "callback called"
而是在浏览器中我看到 http://<hostname>:8080/session
和404的消息,因为我还没有配置会话URL。这是没有问题1.问题没有2 - 如果我配置会话URL,并打印出来后消息
class session:
def POST(self):
data = web.data()
print data
def GET(self):
print "callback called"
我可以看到张贴的东西叫做“authenticity_token”网址的一些数据。
我试过使用python_oauth2库,但无法通过authorization_url调用。所以我尝试了这个更简单的请求库。有人可以指出我这里出了什么问题。
这是你正在遵循的指南:http://developer.github.com/guides/basics-of-authentication/?你在写什么“会话”?这是回调还是别的?此外,您不需要在初始请求中发送客户端密钥,只需发送客户端ID和范围,以及可选的重定向url:http://developer.github.com/v3/oauth/#web-application -流。您可以在回调处理程序中发送第二个请求中的客户端密钥。 – 2013-03-25 10:17:53
@IvanZuzak - 这是使用'http:// developer.github.com/v3/oauth /#web-application-flow'的开发指南Im。 – 2013-03-25 10:26:04
@IvanZuzak对不起,赶快输入这个开发指南使用'http://developer.github.com/v3/oauth /#web-application-flow'我发送没有client_secret的请求。同样的结果。 '/ session'是我在输入github用户名密码后在浏览器中看到的URL。 – 2013-03-25 10:32:29