【发布时间】:2021-07-28 11:36:01
【问题描述】:
我目前正在尝试设置 Twinfield API,在使用 php-twinfield/twinfield 库时应该非常简单。但有一件事我不完全理解。
这是我的代码:
$provider = new OAuthProvider([
'clientId' => 'someClientId',
'clientSecret' => 'someClientSecret',
'redirectUri' => 'https://example.org/'
]);
$accessToken = $provider->getAccessToken("authorization_code", ["code" => ...]);
$refreshToken = $accessToken->getRefreshToken();
$office = \PhpTwinfield\Office::fromCode("someOfficeCode");
$connection = new \PhpTwinfield\Secure\OpenIdConnectAuthentication($provider,
$refreshToken, $office);
$accessToken 需要点上的东西,某种代码。我不确定那应该是什么......
我希望有人可以帮助我。已经谢谢了!
我仍然坚持使用 oauth2 设置...提供商似乎拥有所需的所有信息。它返回检索 accessToken 所需的代码。但是,尝试使用以下代码获取一个:
$accessToken = $provider->getAccessToken('authorization_code',
['code' => $_GET['code']]);
这将返回“invalid_grant”。 我试图重置我的 clientSecret ......但这没有帮助。 我希望有人可以进一步帮助我。
【问题讨论】:
-
使用这种类型的 OAuth2 重定向流程,您需要先将用户发送到登录提供程序;在他们使用他们的凭据授权后,他们会被重定向回您的应用程序(到您指定的
redirectUri),并在 URL 后附加一个codeGET 参数。然后可以将该代码交换为访问令牌。 -
我不完全明白你的意思。我如何将用户发送到登录提供程序?这是否意味着我需要先设置 API 连接,然后将该连接发送给提供商?如果你有一个代码示例,那真的很有帮助! (不是说你需要为我做这项工作xD)
-
github.com/php-twinfield/twinfield#authentication指的是oauth2-client.thephpleague.com/usage,这基本上是你需要实现的。无论必要的 URL 端点是什么,您都需要通过 Twinfield API 文档弄清楚。 (除非您的 SDK 已经以某种方式以硬编码形式包含它们。)
标签: php laravel api oauth-2.0 twinfield