让Google登录使用PHP会话

时间:2014-09-11 16:40:00

标签: php oauth session-variables google-oauth

现在我正在尝试开发一个简单的网站来演示三种登录:Facebook,Google和Twitter。

我已经让Facebook和Twitter都使用PHP会话来保存用户数据,以便我可以在任何页面上引用它们(例如显示他们的名字,头像。)

我制作的网站只会使用登录功能将其基本个人资料信息(例如ID,姓名和电子邮件)存储为登录功能,无需使用任何更高级别的功能。

但是,我无法通过Google登录将其内容转储到会话中,Google坚持使用回调并通过页面上的Javascript函数捕获回调。

Google doc帮助:https://developers.google.com/+/web/signin/add-button

我对此并不熟悉,也不确定如何在不编写一堆javascript catch功能的情况下引用用户的数据页面到页面,并且javascript无法设置PHP会话。另外,我想让这三者有点统一,所以无论他们是否登录Twitter,Facebook或Google,我都可以用PHP编写

if (isset($_SESSION['USERID']))
{show their info no matter what login because they set the same session fields}

一切都会很开心。

所以我想知道我是否可以将Google登录信息注入PHP会话以及我将如何进行此操作。

============

我遇到的一个问题是,我已经为Oauth登录寻找帮助和教程好几天了,而且还没有真正理解如何以我理解和写作的方式做Oauth它。对于每个写作写作的服务来说,似乎过于复杂和具体。大多数文档都是上帝的海洋,他们甚至在谈论什么。因此,如果有人能够用愚蠢的人的话来触发我的理解,那就太好了。

2 个答案:

答案 0 :(得分:0)

我解决了这个问题,关于jQuery登录的问题和资源可以在这里找到: Google signin callback - get name and email

关于PHP与JQuery的反思
虽然谷歌有一个PHP的API,当我发现它看起来很旧并且已经弃用,几乎没有帮助/文档。由于我是谷歌特定登录流程的新手,我打算使用基本的网络语言解决方案(他们更专注于javascript / jQuery),我遵循了他们的jQuery登录文档。

由于我所有其他登录选项都使用PHP,因此为jQuery制作这么多例外是很麻烦的 但是,您可以做的是将回调方法保留在页面的标题中。登录时,Google会验证登录信息并将您退回到页面,您可以将用户扫到回调中的右侧页面,也可以使用AJAX将登录信息注入数据库。

关于jQuery登录的好处是你不必跟踪PHP会话和变量。与使用PHP与服务器通信相比,不好的一点是感觉有点笨拙和不方便。

如有兴趣,请参阅上面的解决方法链接。

答案 1 :(得分:0)

if ($gClient->getAccessToken()) {
$userProfile = $google_oauthV2->userinfo->get();
//DB Insert
$gUser = new Users();
$gUser->checkUser('google',$userProfile['id'],$userProfile['given_name'],$userProfile['family_name'],$userProfile['email'],$userProfile['gender'],$userProfile['locale'],$userProfile['link'],$userProfile['picture']);
$_SESSION['google_data'] = $userProfile; // Storing Google User Data in Session
var_dump($_SESSION['google_data']);
header("location: account.php");
$_SESSION['token'] = $gClient->getAccessToken();
} else {
$authUrl = $gClient->createAuthUrl();
}
相关问题