如何通过拥有他的令牌来获取有关用户的信息

Posted

技术标签:

【中文标题】如何通过拥有他的令牌来获取有关用户的信息【英文标题】:How to get information about a user by having his token 【发布时间】:2018-12-18 09:31:46 【问题描述】:

如何在用户授权后获取用户的一些信息,我需要获取他的服务器列表。我正在使用 RestCord 和 oauth2-discord-new 库,但这些库不允许这样做。如何使用 php 做到这一点?

更新:

我尝试了什么:

$provider = $discord->provider;
if (!Yii::$app->request->get('code')) 
    $options = [
        'scope' => ['identify', 'email', 'guilds']
    ];
    $authUrl = $provider->getAuthorizationUrl($options);
    return $this->redirect($authUrl);
 else 
    $token = $provider->getAccessToken('authorization_code', [
        'code' => Yii::$app->request->get('code')
    ]);
    $discord = new DiscordClient(['token' => $token->getToken()]);
    $discord->user->getCurrentUser([]); // Return 401 UNAUTHORIZED

【问题讨论】:

确实缺少无数信息来诊断这个问题。 @MatheusReis,这里不需要我的代码(但我仍然更新了问题),因为这个问题与 restcord 文档更相关。我不是要你为我写代码,但我只是想知道在哪里可以看到示例以及如果当前的库没有提供这样的机会,我仍然可以使用哪些库。 【参考方案1】:

我查看了restcord的源代码。还找到了参数tokenType。关于它,文档中没有写任何内容,但如果您在 OAuth 中安装它,那么该库将在用户模式下工作,而不是机器人。如何正确使用:

$discord = new DiscordClient([
    'token' => 'userToken', 
    'tokenType' => 'OAuth'
]);

我花了很多时间寻找这个问题的解决方案,我很惊讶官方文档中没有写这个参数。我希望这会节省您的时间!

【讨论】:

是的,在 2020 年仍然如此。文档中没有提到 tokenType 参数。添加了'tokenType' => 'OAuth',现在可以检索用户详细信息。谢谢。

以上是关于如何通过拥有他的令牌来获取有关用户的信息的主要内容,如果未能解决你的问题,请参考以下文章

OOAuthException:必须使用活动访问令牌来查询有关当前用户的信息

Keycloak 访问令牌与 UserInfo 令牌?

facebook sdk:“必须使用活动访问令牌来查询有关当前用户的信息”

如何在spring security oauth2授权服务器中通过jwt令牌获取用户信息?

如何使用 C# 从安全令牌中获取信息

Django JWT 获取用户信息