环境 - Python 2.7.3,webpy。
我正在尝试使用 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 消息,因为我还没有配置 session URL。这是第 1 个问题。第 2 个问题 - 如果我配置 session URL 并打印出帖子消息class session:
def POST(self):
data = web.data()
print data
def GET(self):
print "callback called"
我可以看到一些发布到 URL 的数据,其中包含名为“authenticity_token”的内容。
我尝试使用 python_oauth2 库,但无法通过 authorization_url 调用。所以我尝试了这个更简单的请求库。有人可以向我指出这里出了什么问题。
最佳答案
我不确定您的问题是什么,但请尝试在下面重现此流程,首先使用浏览器手动,然后使用您的 python 库。它将帮助您调试问题。
https://github.com/login/oauth/authorize?client_id=YOUR_CLIENT_ID_HERE
http://requestb.in/YOUR_REQUEST_BIN_ID?code=GITHUB_CODE
(例如,
http://requestb.in/abc1def2?code=123a456b789cdef
)另外,浏览器中页面的内容应该是“ok”的(这是请求bin服务返回的内容)。
如果这些步骤中的任何一个给您带来问题,请告诉我。
关于python - Github api v3 通过 python oauth2 库访问 - 重定向问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15610749/