0

我正在尝试让 soundcloud 授权我的 django 应用程序,该应用程序已成功注册到 soundcloud。我传入注册期间提供的详细信息以及回调 uri (http://localhost:8000/profile/)。

我调用了登录页面,它提示我允许我的应用程序访问我的 soundcloud 帐户。我接受。

def login(request):
    if request.method == 'GET':
        client = soundcloud.Client(
            client_id=settings.CLIENT_ID, 
            client_secret=settings.CLIENT_SECRET,
            redirect_uri=settings.REDIRECT_URI,
            )

        return HttpResponseRedirect(client.authorize_url())
    return render(request, 'login.html', {})

Soundcloud 为我的回调链接提供了附加的授权代码。

http://localhost:8000/profile/?code=xxxxxxxxxxxxxxxx...etc...&signed_up=0

要提取代码以获取交换令牌,我这样做:

    urlpatterns = patterns('core.views',

    url(r'^login/$', 'login', name='login'),
    (r'^profile/\?code=(?P<code>[\d\w]{32}).*/$', 'profile'),


    url(r'^admin/', include(admin.site.urls)),
)

但得到一个“找不到页面”。我在这里做错了什么?我检查了shell中的正则表达式,它返回了代码......

我是 oAuth 和 api 的新手,因此不胜感激。

4

1 回答 1

1

使您的 URL 模式如下所示:

urlpatterns = patterns('core.views',
    url(r'^login/$', 'login', name='login'),
    url(r'^profile/$', 'profile'),
    url(r'^admin/', include(admin.site.urls)),
)

在您的个人资料视图中,您可以code从查询字符串中获取如下信息:

def profile(request):
    code = request.GET.get("code", None)
    if not code:
        ## code has not been set in query string
        ## do something

    ## do something with code you have

简单易行!!

于 2013-01-23T19:15:43.597 回答