Search code examples
deezer

When not logged to Deezer, my application is redirected to wrong url


I'm having a problem with my redirect url, but only when I'm not connected to deezer already.

When I'm connected, my OAuth flow works perfectly, and I'm redirected to the right url: 'http://10.0.0.68:3000/callback/'.

But when I don't have a deezer session on, and I am redirected to the Deezer login page, it Doesn't work. Whenever I log in to Deezer, either with facebook or not, I am redirected to the following address: 'http://10.0.0.68:3000/callback/https://connect.deezer.com/oauth/auth.php?perms=basic_access%2Cemail%2Coffline_access&format=window&app_id=175451&redirect_uri=http%3A%2F%2F10.0.0.68%3A3000%2Fcallback%2F#='.

I have no idea how could this be a problem with my app, since it happens outside of my scope, but here is my code:

settings.py

DEEZER_REDIRECT_URI = reverse_lazy('front:callback')
DEEZER_API_URL = 'https://api.deezer.com/'
DEEZER_CONNECT_URL = 'https://connect.deezer.com/'
DEEZER_APP_ID = "xxxxxx"
DEEZER_SECRET_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

views.py

class LoginView(View):
    """Logs user with Deezer"""
    def get(self, request):
        url = settings.DEEZER_CONNECT_URL + 'oauth/auth.php?' + \
                                        urlencode({
                                            'app_id': settings.DEEZER_APP_ID,
                                            'perms': 'basic_access,email,offline_access',
                                            'redirect_uri': settings.BASE_URL + str(settings.DEEZER_REDIRECT_URI)[1:]
                                        })
        redirect = HttpResponseRedirect(url)
        return redirect

urls.py

app_name = 'front'
urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='index'),
    url(r'^login/$', views.LoginView.as_view(), name='login'),
    url(r'^callback/$', views.CallbackView.as_view(), name='callback'),
]

Hope someone can help me.


Solution

  • UPDATE 2016-03-31

    Seems that Deezer resolved the issue so it should work in your case, too.

    Previous answer:

    At least I can tell that it's not your fault. Today I realized that the previously working OAuth-workflow for our application www.mooval.de now behaves exactly the same as you describe here.

    Deeezer seems to have deployed something recently which fails to create a correct redirect URL:

    https://connect.deezer.com/login.php?app_id=155151&redirect_type=refresh&redirect_link=http%3A%2F%2Fwww.mooval.de%2FdeezerAuthCallbackhttps%3A%2F%2Fconnect.deezer.com%2Foauth%2Fauth.php%3Fstate%3Deb05c0fe-48ef-4cce-85c3-ed1d037d7111%26perms%3Doffline_access%252Cmanage_library%252Cdelete_library%26format%3Dwindow%26app_id%3D155151%26redirect_uri%3Dhttp%253A%252F%252Fwww.mooval.de%252FdeezerAuthCallback

    GET /oauth/auth.php?app_id=xxxxxx&redirect_uri=http%3A%2F%2Fwww.mooval.de%2FdeezerAuthCallback&perms=manage_library%2Cdelete_library%2Coffline_access&state=eb05c0fe-48ef-4cce-85c3-ed1d037d7111 
    HTTP/1.1 Host: connect.deezer.com 
    Connection: keep-alive 
    Pragma: no-cache 
    Cache-Control: no-cache 
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8     
    Upgrade-Insecure-Requests: 1 
    User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36 
    DNT: 1 
    Referer: http://mooval.de/ 
    Accept-Encoding: gzip, deflate, sdch 
    Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 
    Cookie: xxx
    
    HTTP/1.1 302 Found
    Date: Wed, 30 Mar 2016 12:37:23 GMT
    Server: Apache
    Set-Cookie: sid=fr7ae7be4cd40c37855e22e876961fce0c3ec235; path=/; domain=.deezer.com; HttpOnly
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    P3P: policyref="/w3c/p3p.xml" CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"
    Location: https://connect.deezer.com/login.php?app_id=155151&redirect_type=refresh&redirect_link=http%3A%2F%2Fwww.mooval.de%2FdeezerAuthCallbackhttps%3A%2F%2Fconnect.deezer.com%2Foauth%2Fauth.php%3Fstate%3Deb05c0fe-48ef-4cce-85c3-ed1d037d7111%26perms%3Doffline_access%252Cmanage_library%252Cdelete_library%26format%3Dwindow%26app_id%3Dxxxxx%26redirect_uri%3Dhttp%253A%252F%252Fwww.mooval.de%252FdeezerAuthCallback
    X-Host: blm-web-49
    Content-Length: 0
    Keep-Alive: timeout=3, max=500
    Connection: Keep-Alive
    Content-Type: text/html; charset=utf-8