将 python dropbox API 与 django 结合使用

2024-01-18

我在用着DropboxOAuth2Flow https://www.dropbox.com/static/developers/dropbox-python-sdk-1.6-docs/index.html#dropbox.client.DropboxOAuth2Flow我的 Django v1.5.3 应用程序中为 dropbox API v1.6 描述的方法,当重定向到 dropbox oauth2 授权页面时出现 400 错误。

当我转到 dropbox_auth_start URL 时,我被重定向到:

然后就出现400错误。

顺便说一句,“dropbox-auth-csrf-token”被写入会话文件中。

我的 Django 代码:

views.py

def get_dropbox_auth_flow(web_app_session):
    redirect_uri = "http://www.mydomain.com"
    return DropboxOAuth2Flow('blahblahblah', 'blehblehbleh', redirect_uri, web_app_session, "dropbox-auth-csrf-token")

# URL handler for /dropbox-auth-start
def dropbox_auth_start(request):
    authorize_url = get_dropbox_auth_flow(request.session).start()
    return HttpResponseRedirect(authorize_url)

# URL handler for /dropbox-auth-finish
def dropbox_auth_finish(request):
    try:
        access_token, user_id, url_state = get_dropbox_auth_flow(request.session).finish(request.GET)
    except DropboxOAuth2Flow.BadRequestException, e:
        http_status(400)
    except DropboxOAuth2Flow.BadStateException, e:
        # Start the auth flow again.
        return HttpResponseRedirect("http://www.mydomain.com/dropbox_auth_start")
    except DropboxOAuth2Flow.CsrfException, e:
        return HttpResponseForbidden()
    except DropboxOAuth2Flow.NotApprovedException, e:
        raise e
    except DropboxOAuth2Flow.ProviderException, e:
        raise e

urls.py

from django.conf.urls import patterns, url, include
from django.contrib import admin
admin.autodiscover()


urlpatterns = patterns('',
    url(r'^dropbox_auth_start/?$',views.dropbox_auth_start),
    url(r'^dropbox_auth_finish/?$',views.dropbox_auth_finish),
)

就像 @smarx 所说,我刚刚从 HTTP 和 HTTPS 切换过来,一切都工作得很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 python dropbox API 与 django 结合使用 的相关文章

随机推荐