我正尝试在登录时将基本的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上方的变量?
答案 0 :(得分:1)
我用以下代码解决了这个问题:
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 people对象的嵌套结构: https://developers.google.com/+/api/latest/people
如果你找不到它,谷歌有一个隐藏得很好的快速启动应用程序,用于javascript / jQuery登录,基本上可以为你登录,除非它需要一些撕裂,如果你想让它反弹到其他页面而不是用信息刷新自己。我坦率地说明了我的需求。 https://developers.google.com/+/quickstart/java