gpt4 book ai didi

php - 持久性谷歌 OpenID+OAuth?

转载 作者:可可西里 更新时间:2023-11-01 12:52:47 25 4
gpt4 key购买 nike

我正在开发一个需要频繁访问 Google 数据 API 的网络应用程序,因此我决定使用“OAuth with Federated Login (Hybrid Protocol)”方法让用户登录应用程序。我得到了 http://googlecodesamples.com/hybrid/工作(在对 PHP 5.3 兼容性进行了一些调整之后),并且能够获得访问 token 。下一步是什么?如何使用此访问 token ?

看来我需要为用户创建一个本地 session 来浏览应用程序的其余部分。这是否需要完全独立于 Google 登录,或者您将如何处理?

相关:此应用程序还需要一个 REST API,为此我计划使用 OAuth。关于如何将其与实际应用的身份验证联系起来的任何建议?

最佳答案

为此,我正在使用 PHP LightOpenID 库 ( see on gitorious )。它为我们处理所有的身份验证流程。您无需为 token 之类的事情操心。

这里是我显示“使用 Google 登录”链接的页面:

<?php
require_once 'openid.php';
$openid = new LightOpenID;

$openid->identity = 'https://www.google.com/accounts/o8/id';
$openid->required = array('contact/email');
$openid->returnUrl = 'http://my-website.com/landing-login.php'
?>

<a href="<?php echo $openid->authUrl() ?>">Login with Google</a>

当点击链接时,会出现一个 Google 页面,要求他进行身份验证和/或授权您检索他的电子邮件。

然后他将被重定向到着陆页$openid->returnUrl。该页面的代码应该是:

<?php
require_once 'openid.php';
$openid = new LightOpenID;

if ($openid->mode) {
if ($openid->mode == 'cancel') {
// User has canceled authentication
} elseif($openid->validate()) {
// Yeah !
$data = $openid->getAttributes();
$email = $data['contact/email'];
} else {
// The user has not logged in via Google
}
} else {
// The user does not come from the link of the first page
}
?>

如果您想从用户那里获取更多信息,您必须将它们添加到第一页的$openid->required 中。例如:

$openid->required = array(
'contact/email',
'namePerson/first',
'namePerson/last'
);

如果用户接受,将允许您在第二页中获取他的名字和姓氏:

$name = $data['namePerson/first'] . " " . $data['namePerson/last'];

然后,对于Oauth部分,可以按照this LightOpenID issue的说明进行.

关于php - 持久性谷歌 OpenID+OAuth?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6076781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com