为了账号安全,请及时绑定邮箱和手机立即绑定

将 Google OAuth 授权令牌存储在数据库中

将 Google OAuth 授权令牌存储在数据库中

PHP
慕码人2483693 2022-10-14 14:33:58
我正在构建一个门户,多个用户可以在其中登录到他们的多个 Gmail 帐户。我已成功检索令牌值,但是,我想将其存储在我的数据库中,但我无法存储它。下面是我正在使用的代码:function mInititalize(){$client = new Google_Client();$client->addScope('https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email https://mail.google.com/');    $client->setClientId(Config('gmail.client_id'));$client->setClientSecret(Config('gmail.client_secret'));$client->setRedirectUri('http://localhost:81'.Config('gmail.redirect_url'));    $loginURL = $client->createAuthUrl();return redirect($loginURL);}重定向或用户登录后function mGetToken(){ $token = $client->fetchAccessTokenWithAuthCode( 'code'); // here i get the 'code' from login URL  I pass this code to get token I successfully get token      $oAuth = new Google_Service_Oauth2( $client);     $userData = $oAuth->userinfo_v2_me->get(); // get current user detail    }我想将$token值存储在数据库中,但收到错误消息>Serialization of 'Closure' is not allowed请任何人帮我解决这个问题。谢谢。
查看完整描述

1 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

我建议存储 Google API 的 OAuth 凭据信息,而不是在您的数据库中,而是通过 API 本身。如果您打算以任何身份验证方式使用它,则会遇到问题,如文档所述:

访问令牌会定期过期并成为相关 API 请求的无效凭证。 Google Identity Platform:将 OAuth 2.0 用于 Web 服务器应用程序

但是,相同的文档还显示了一种可以在 API 中本地设置或检索令牌的方法。由于它是与 google 的身份验证过程相关的数据,并且如果您存储它可能会过时,因此最好让他们处理它并使用 API。同一来源:

如果您需要将访问令牌应用于新的 Google_Client 对象(例如,如果您将访问令牌存储在用户会话中),请使用 setAccessToken 方法:

$client->setAccessToken($access_token);
$client->getAccessToken();


查看完整回答
反对 回复 2022-10-14
  • 1 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号