@@ -111,20 +111,23 @@ public function connect(?string $id = null): Redirector|RedirectResponse
111111 }
112112
113113 if (! request ()->has ('code ' ) && ! $ this ->isConnected ($ id )) {
114- $ codeVerifier = bin2hex (random_bytes (32 ));
115- $ codeChallenge = rtrim (
116- strtr (base64_encode (hash ('sha256 ' , $ codeVerifier , true )), '+/ ' , '-_ ' ), '= '
117- );
118-
119- return redirect ($ provider ->getAuthorizationUrl ([
120- 'code_challenge ' => $ codeChallenge ,
121- 'code_challenge_method ' => 'S256 ' ,
122- ]));
114+ return redirect ($ provider ->getAuthorizationUrl ());
123115 }
124116
125117 if (request ()->has ('code ' )) {
126118
127- $ accessToken = $ provider ->getAccessToken ('authorization_code ' , ['code ' => request ('code ' )]);
119+ try {
120+ $ accessToken = $ provider ->getAccessToken ('authorization_code ' , ['code ' => request ('code ' )]);
121+ } catch (IdentityProviderException $ e ) {
122+
123+ $ response = $ e ->getResponseBody ();
124+
125+ $ errorMessage = "{$ response ['error ' ]} {$ response ['error_description ' ]}\n" .
126+ 'Error Code: ' .($ response ['error_codes ' ][0 ] ?? 'N/A ' )."\n" .
127+ "More Info: {$ response ['error_uri ' ]}" ;
128+
129+ throw new Exception ($ errorMessage );
130+ }
128131
129132 if (auth ()->check ()) {
130133 $ this ->storeToken (
@@ -342,6 +345,9 @@ protected function getUserId(?string $id = null): ?string
342345 protected function getProvider (): GenericProvider
343346 {
344347 app ()->singleton (GenericProvider::class, function () {
348+
349+ $ codeVerifier = bin2hex (random_bytes (32 ));
350+
345351 return new GenericProvider ([
346352 'clientId ' => config ('msgraph.clientId ' ),
347353 'clientSecret ' => config ('msgraph.clientSecret ' ),
@@ -350,6 +356,10 @@ protected function getProvider(): GenericProvider
350356 'urlAccessToken ' => config ('msgraph.urlAccessToken ' ),
351357 'urlResourceOwnerDetails ' => config ('msgraph.urlResourceOwnerDetails ' ),
352358 'scopes ' => config ('msgraph.scopes ' ),
359+ 'code_challenge_method ' => 'S256 ' ,
360+ 'code_challenge ' => rtrim (
361+ strtr (base64_encode (hash ('sha256 ' , $ codeVerifier , true )), '+/ ' , '-_ ' ), '= '
362+ ),
353363 ]);
354364 });
355365
0 commit comments