From 1a48a9aceaa750d9100e5140a45825acd646dec7 Mon Sep 17 00:00:00 2001 From: Anthony MARQUES Date: Mon, 11 Mar 2024 16:53:36 +0100 Subject: [PATCH] Fix deezer authentication (#542) --- providers/deezer/deezer.go | 2 +- providers/deezer/session.go | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/providers/deezer/deezer.go b/providers/deezer/deezer.go index 0647237ce..a0f9b9d1d 100644 --- a/providers/deezer/deezer.go +++ b/providers/deezer/deezer.go @@ -19,7 +19,7 @@ import ( const ( authURL string = "https://connect.deezer.com/oauth/auth.php" - tokenURL string = "https://connect.deezer.com/oauth/access_token.php" + tokenURL string = "https://connect.deezer.com/oauth/access_token.php?output=json" endpointProfile string = "https://api.deezer.com/user/me" ) diff --git a/providers/deezer/session.go b/providers/deezer/session.go index 968cf9c68..83f8c8074 100644 --- a/providers/deezer/session.go +++ b/providers/deezer/session.go @@ -7,7 +7,6 @@ import ( "time" "github.com/markbates/goth" - "golang.org/x/oauth2" ) // Session stores data during the auth process with Deezer. @@ -28,7 +27,9 @@ func (s Session) GetAuthURL() (string, error) { // Authorize the session with Deezer and return the access token to be stored for future use. func (s *Session) Authorize(provider goth.Provider, params goth.Params) (string, error) { p := provider.(*Provider) - token, err := p.config.Exchange(oauth2.NoContext, params.Get("code")) + + ctx := goth.ContextForClient(p.Client()) + token, err := p.config.Exchange(ctx, params.Get("code")) if err != nil { return "", err } @@ -37,8 +38,13 @@ func (s *Session) Authorize(provider goth.Provider, params goth.Params) (string, return "", errors.New("Invalid token received from provider") } + expires, ok := token.Extra("expires").(float64) + if ok != true { + return "", errors.New("Invalid token received from provider") + } + s.AccessToken = token.AccessToken - s.ExpiresAt = token.Expiry + s.ExpiresAt = time.Now().Add(time.Second * time.Duration(expires)) return token.AccessToken, err }