如何解决如何伪造社交名媛`userFromToken` 方法进行测试?
我已经完成了对类似问题的搜索,其中大部分是包含 npm install -g sass
和其他内容的有状态实现。就我而言,我不需要它们,因为提供商的身份验证是在客户端设备 (Android) 上本地完成的。
我所做的是将令牌从设备传递到服务器,并使用它来获取用户信息以创建新帐户和访问令牌,以便我的服务器知道谁尝试从哪个提供商访问 API。
我做了一个测试,但我不能让它工作
redirect
测试失败,public function test_user_can_login_with_socialite_provider()
{
$user = User::factory()->has(Provider::factory())->createOne();
$provider = $user->providers->first(); // => name: google,token: fake_token
$params = ['provider' => $provider->name,'provider_token' => $provider->token];
$response = $this->postJson(route('auth.login.provider'),$params);
$response->dump();
$response->assertOk();
$response->assertJsonFragment(['token']);
Socialite::shouldReceive('driver')->once()->with($params['provider'])->andReturnSelf();
Socialite::shouldReceive('userFromToken')->once()->with($params['provider_token'])->andReturn($user);
}
,这是转储。
500 error
我的实现是这样的
{#2667
+"message": """
Client error: `GET https://www.googleapis.com/oauth2/v3/userinfo?prettyPrint=false` resulted in a `401 Unauthorized` response:\n
{\n
"error": "invalid_request",\n
"error_description": "Invalid Credentials"\n
}\n
...
我想知道我是否可以执行 public function loginWithProvider(RequestLoginWithProvider $request)
{
$provider = Socialite::driver($request->provider)->userFromToken(
$request->provider_token
);
$user = User::firstOrCreate(
['email' => $provider->getEmail()],['email_verified_at' => Now(),'name' => $provider->getName()],);
$user->providers()->updateOrCreate(
['name' => $request->name,'provider_id' => $provider->getId()],['avatar' => $provider->getAvatar()],);
return $user->createtoken($request->provider)->plainTextToken;
}
之类的操作,这样它就不会真正调用 Google Api。但由于文档没有提到任何关于测试社交名流的内容,我有点迷失了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。