python - 你如何在 Django 中使用 rauth?

标签 python django oauth oauth-2.0 rauth

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/

相关文章:

jquery - Oauth 的主干覆盖 collection.sync

python - 查找连通分量 Networkx

django - 如何从 Jinja2 扩展访问上下文

python - 通过字典理解创建具有列表值的字典?

python - Django : SSLError: [SSL] PEM lib with APNS

python - 如何在模板中显示ManyToMany字段

php - 非 SSL 网站的 OAuth1 或 OAuth2?

java - oAuth 2 实现 java

python - 如何在 Django 查询集中重新创建 reddit 排序?

python - 将字符串转换为python 3中的有效wordpress url以供请求库使用