使用 Laravel 社会名流用户 returns 失踪 authorization_code
Use Laravel Socialite user returns missing authorization_code
我正在使用 Laravel Socialite 登录 SuperOffice API。刚刚将提供程序添加为 pr 但已经对其进行了测试。我在本地和正在创建的包 superoffice-api
中使用提供程序 superoffice
。已将两个包添加到 Laravel 应用中的 composer.json:
"repositories": [
{
"type": "path",
"url": "./packages/superoffice-api"
},
{
"type": "path",
"url": "./packages/superoffice"
}
]
同样在superoffice-api
composer.json中添加了superoffice
社会名流提供者。
登录过程正常,但在尝试使用该用户进行其他 API 调用时出现问题。我的意思是在回调中我可以执行以下操作:
public function superofficeCallback(Request $request): RedirectResponse
{
$user = Socialite::driver('superoffice')->stateless()->user();
return redirect()->route('dashboard.index')->with([
'message' => 'Loggedin with SuperOffice as '.$user->name,
'success' => true,
]);
}
这显示了预期的 $user->name
。现在,当尝试在 superoffice-api
包中调用 Socialite::driver('superoffice')->stateless()->user()
时,我收到以下错误消息:
GuzzleHttp\Exception\ClientException: Client error: POST https://sod.superoffice.com/login/common/oauth/tokens
resulted in a 400 Bad Request
response:
{ "error": "invalid_request", "error_description": "missing authorization_code"}
无论是在方法中调用还是在 class 的 __construct()
中调用都没关系。
所以我的问题是如何在包 superoffice-api
中使用 Socialite 提供商 superoffice
用户?这是获得 access_token
所必需的。可以想象,由于在包中调用了 Socialite,因此缺少某种引用。
这里的问题是 access_token
和 refresh_token
需要以其他方式存储在回调函数中。例如,当存储在数据库中时,您可以在任何地方使用令牌。
我正在使用 Laravel Socialite 登录 SuperOffice API。刚刚将提供程序添加为 pr 但已经对其进行了测试。我在本地和正在创建的包 superoffice-api
中使用提供程序 superoffice
。已将两个包添加到 Laravel 应用中的 composer.json:
"repositories": [
{
"type": "path",
"url": "./packages/superoffice-api"
},
{
"type": "path",
"url": "./packages/superoffice"
}
]
同样在superoffice-api
composer.json中添加了superoffice
社会名流提供者。
登录过程正常,但在尝试使用该用户进行其他 API 调用时出现问题。我的意思是在回调中我可以执行以下操作:
public function superofficeCallback(Request $request): RedirectResponse
{
$user = Socialite::driver('superoffice')->stateless()->user();
return redirect()->route('dashboard.index')->with([
'message' => 'Loggedin with SuperOffice as '.$user->name,
'success' => true,
]);
}
这显示了预期的 $user->name
。现在,当尝试在 superoffice-api
包中调用 Socialite::driver('superoffice')->stateless()->user()
时,我收到以下错误消息:
GuzzleHttp\Exception\ClientException: Client error:
POST https://sod.superoffice.com/login/common/oauth/tokens
resulted in a400 Bad Request
response: { "error": "invalid_request", "error_description": "missing authorization_code"}
无论是在方法中调用还是在 class 的 __construct()
中调用都没关系。
所以我的问题是如何在包 superoffice-api
中使用 Socialite 提供商 superoffice
用户?这是获得 access_token
所必需的。可以想象,由于在包中调用了 Socialite,因此缺少某种引用。
这里的问题是 access_token
和 refresh_token
需要以其他方式存储在回调函数中。例如,当存储在数据库中时,您可以在任何地方使用令牌。