谷歌登录回调 – 获取姓名和电子邮件
我试图在登录时将基本的Google帐户信息(名称,电子邮件,ID。)捕获到数据库中。
我这样做是通过为他们的个人资料信息设置变量并通过AJAX更新数据库。
(参见下面的例子中的变量)
if (authResult['access_token']) { // The user is signed in this.authResult = authResult; helper.connectServer(); // After we load the Google+ API, render the profile data from Google+. //this renders profile information to the page just fine gapi.client.load('plus','v1',this.renderProfile); var email = gapi.client.load('plus','v1',this.getEmail); var acct_type = 'G'; var id = gapi.client.load('plus','v1',this.getId); var fname = gapi.client.load('plus','v1',this.getFname); var lname = gapi.client.load('plus','v1',this.getLname); //DO AJAX!! $.post("_google/processlogindata.php", { id:id, fname:fname, lname:lname, email:email, acct_type:acct_type });
ajax正在工作,它传递硬编码'G'
并显示在数据库中。
当数据库默认为NULL时,其余变量显示为空白条目。
我复制了renderProfile
因为它可以在页面上显示配置文件位。 这就是getFname的样子,例如(它们几乎都是一样的):
getFname: function() { var request = gapi.client.plus.people.get( {'userId' : 'me'} ); request.execute( function(profile) { return profile.name.GivenName; });},
如果我将返回变量设置为像“name”这样的静态字符串,它将显示在数据库中。 所以问题肯定是我试图访问或保存此配置文件信息。
所以我的问题是,如何将这些配置文件对象正确地捕获到AJAX上方的变量?
我用以下代码解决了这个问题:
var acct_type = 'G'; gapi.client.load('plus','v1', function(){ var request = gapi.client.plus.people.get({ 'userId': 'me' }); request.execute(function(resp) { var id = resp.id; var fname = resp.name.givenName; var lname = resp.name.familyName; var email = resp.emails[0].value; $.post("_yourDBinjection_.php", { id:id, fname:fname, lname:lname, email:email, acct_type:acct_type }); }); });
关键是它不使用外部函数或变量,它设置gapi.client.load
函数参数中的所有内容,包括变量和发送ajax。
请注意,第三个参数(一个函数,无论是编写还是引用)在Google dev上列为“可选”,但如果没有它,它就不是很有用(返回一个promise?)所以你想要对加载的信息做任何事都应该完成在函数参数中。 出于某种原因,在这种情况下将其拼接出不同的外部函数,我最终无法触及或使用它上面的变量(但请注意, G
在此示例中也通过了。)
我不喜欢嵌套函数,所以搞清楚这很奇怪。
参考
谷歌开发人员偷偷摸摸了很多例子和信息,所以这里有一些文章帮助我产生了这个答案:
(javascript版)
https://developers.google.com/+/api/latest/people/get#examples
非常模糊的gapi.client.load描述:
https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiclientload
登录资源
此页面显示了配置文件JSON返回的实时版本/代码示例: https : //developers.google.com/+/web/people/
本文将向您展示每个JSON人员对象的嵌套结构: https : //developers.google.com/+/api/latest/people
如果你找不到它,谷歌有一个隐藏的快速入门应用程序,用于javascript / jQuery登录,基本上可以为你登录,除非你想要它反弹到其他页面需要一些撕毁而不是用信息刷新自己。 我坦率地说明了我的需求。 https://developers.google.com/+/quickstart/java