OAuth网站提到的python库rauth似乎很简单而且最好用。所以,我想在 Django 中使用它,但无法真正实现它。
这是我的问题。
# I do something like this initially
from rauth.service import OAuth2Service
from django.shortcuts import render_to_response
def page(request):
service = OAuth2Service(
consumer_key = "..",
consumer_secret = "...",
.. )
url = service.get_authorize_url(redirect_uri="http://mysite.com/redired-url")
# this url is where the user accepts or not.
# which redirects with authorization code.
return HttpResponseRedirect(url)
现在,当用户打开页面时,它会直接重定向并要求用户允许或拒绝。如果用户允许,我们将在 redirect-url 获取授权码
从授权 token 获取访问 token ,
rauth lib 提到要这样做,我必须将其放在与 redirect-url 相对应的不同 View 下
data = dict(code='foobar',
grant_type='authorization_code',
redirect_uri='http://example.com/')
token = service.get_access_token('POST', data=data)
问题出在 service
对象上。我在一个 View 中创建了 service
实例,我需要在另一个 View 中使用它来获取访问 token ..
我哪里错了..?如何完成。
最佳答案
好吧,有多种方法可以在网络应用程序的上下文中处理这个问题。我强烈建议您查看 Facebook Flask example在示例目录中。
基本思想是提供授权 View 和重定向 View 。您希望提供程序重定向到重定向 View ,并且您应该在其中执行您希望能够执行的所有操作(假设您已获得用户授权)。否则,您应该放弃并尽可能告知用户原因。
现在我通常做的是将服务包装器保存在单独的模块中,而不是在 View 中,然后将它们导入到我需要它们的上下文中。你可以做一些事情来动态地初始化它们等等。但是请引用我发布的链接以获得简单的实现。我认为这应该做你想做的。我意识到这不是 Django,但成语与这种 View 的简单情况非常接近。
关于python - 你如何在 Django 中使用 rauth?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13013931/