updated EveOnlineOAuthProvider

This commit is contained in:
2021-02-12 14:26:32 +09:00
parent 338bd52f28
commit dd5c1f4c2d

View File

@@ -2,13 +2,21 @@
namespace App\Providers;
use Laravel\Socialite\Two\ProviderInterface;
use Laravel\Socialite\Two\AbstractProvider;
use Laravel\Socialite\Two\User;
//use Jose\Component\Core\JWKSet;
//use Jose\Easy\Load;
use Jose\Component\Core\JWKSet;
use Jose\Easy\Load;
//use Laravel\Socialite\Two\ProviderInterface;
//use Laravel\Socialite\Two\AbstractProvider;
//use Laravel\Socialite\Two\User;
use SocialiteProviders\Manager\OAuth2\AbstractProvider;
use SocialiteProviders\Manager\OAuth2\User;
class EveOnlineOAuthProvider extends AbstractProvider implements ProviderInterface {
class EveOnlineOAuthProvider extends AbstractProvider {
/**
* The separating character for the request scopes
*
* @var string
*/
protected $scopeSeparator = ' ';
/**
@@ -18,10 +26,6 @@ class EveOnlineOAuthProvider extends AbstractProvider implements ProviderInterfa
* @return string
*/
protected function getAuthUrl($state) {
return $this->buildAuthUrlFromBase('https://login.eveonline.com/oauth/authorize', $state);
}
protected function getAuthUrlNew($state) {
return $this->buildAuthUrlFromBase('https://login.eveonline.com/v2/oauth/authorize', $state);
}
@@ -31,10 +35,6 @@ class EveOnlineOAuthProvider extends AbstractProvider implements ProviderInterfa
* @return string
*/
protected function getTokenUrl() {
return 'https://login.eveonline.com/oauth/token';
}
protected function getTokenUrlNew() {
return 'https://login.eveonline.com/v2/oauth/token';
}
@@ -44,14 +44,8 @@ class EveOnlineOAuthProvider extends AbstractProvider implements ProviderInterfa
* @param string $token
* @return array
*/
protected function getUserByToken($token) {
$reponse = $this->getHttpClient()->get('https://login.eveonline.com/oauth/verify', [
'headers' => [
'Authorization' => 'Bearer ' . $token,
],
]);
return json_decode($reponse->getBody()->getContents(), true);
protected function getUserByToken2($token) {
return $this->validateJwtToken($token);
}
/**
@@ -68,8 +62,8 @@ class EveOnlineOAuthProvider extends AbstractProvider implements ProviderInterfa
'nickname' => $user['CharacterName'],
'owner_hash' => $user['CharacterOwnerHash'],
'avatar' => 'https://image.eveonline.com/Character/' . $user['CharacterID'] . '_128.jpg',
//'token_type' => $user['TokenType'],
//'expires_on' => $user['ExpiresOn'],
'token_type' => $user['TokenType'],
'expires_on' => $user['ExpiresOn'],
]);
}
@@ -83,13 +77,38 @@ class EveOnlineOAuthProvider extends AbstractProvider implements ProviderInterfa
]);
}
/**
* @return string
*/
private function getJwkUri(): string {
$response = $this->getHttpClient()
->get('https://login.eveonline.com/.well-knonw/oauth-authorization-server');
$metadata = json_decode($response->getBody());
return $metadata->jwks_uri;
}
/**
* @return array
* An array representing the JWK Key Sets
*/
private function getJwkSets(): array {
$jwk_uri = $this->getJwkUri();
$response = $this->getHttpClient()
->get($jwk_uri);
return json_decode($response->getBody(), true);
}
/**
* @param string $access_token
* @return array
* @throws \Exception
*/
private function validateJwtToken(string $access_token): array {
$scopes = array();
$scopes = session()->pull('scopes', []);
// pulling JWK sets from CCP
$sets = $this->getJwkSets();