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 は、authorization_code が追加されたコールバック リンクを提供します。

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)),
)

しかし、「ページが見つかりません」と表示されます。ここで何が間違っていますか?? シェルで正規表現をチェックしたところ、コードが返されました...

私は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 に答える