Google 登录回调 - 获取姓名和电子邮件

2024-05-25

我试图在登录时将基本的谷歌帐户信息(姓名、电子邮件、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 上被列为“可选”,但如果没有它,它就不是很有用(返回一个承诺?)因此,您想对加载的信息执行的任何操作都应该完成在函数参数中。由于某种原因,在这种情况下,我将其拼凑成不同的外部函数,最终无法访问或使用它上面的变量(但还要注意G在这个例子中也顺利通过。)

我不太喜欢嵌套函数,所以弄清楚这一点很奇怪。

参考

谷歌开发人员偷走了很多示例和信息,因此这里有一些文章帮助我生成了这个答案:

(JavaScript版本)
https://developers.google.com/+/api/latest/people/get#examples https://developers.google.com/+/api/latest/people/get#examples

非常模糊的gapi.client.load描述:
https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiclientload https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiclientload

登录资源

此页面显示配置文件 JSON 返回的实时版本/代码示例:https://developers.google.com/+/web/people/ https://developers.google.com/+/web/people/

本文将向您展示每个 JSON people 对象的嵌套结构:https://developers.google.com/+/api/latest/people https://developers.google.com/+/api/latest/people

如果你找不到它,Google 有一个隐藏得很好的 JavaScript/jQuery 登录快速启动应用程序,它基本上可以为你完成登录工作,但如果你希望它弹到其他页面,则需要一些撕碎操作而不是用信息来刷新自己。我把它变成了弗兰肯斯坦以满足我的需要。https://developers.google.com/+/quickstart/java https://developers.google.com/+/quickstart/java

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google 登录回调 - 获取姓名和电子邮件 的相关文章

  • Instagram 粉丝计数 - 使用 jQuery / json 和 PHP

    经过几个小时的工作和一些帮助萨希尔 米塔尔我们已经成功使用 jQuery json 和 PHP 检索 Instagram 关注者计数 这是我们设法整理的内容 希望对其他想要获取 Instagram 信息的人有所帮助 我们的 jQuery I
  • 自动建议 php 的 ajax

    我有一个 html 表单 php 脚本和 jquery 我需要一个 ajax 代码来从我的 php 脚本中进行自动建议 以下是代码 表单 html
  • onclick 事件中未调用函数

    我想在每个 YouTube 链接的末尾添加一些 HTML 以在 litebox 中打开播放器 到目前为止 这是我的代码 document ready function var valid url new RegExp youtube com
  • 使用单击事件调用“trigger”方法时的复选框值

    如何在点击事件中获取正确的当前值以通过触发器调用 Html
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • Highcharts jQuery 渲染问题 - 所有浏览器

    我在尝试使用构建堆积柱形图时遇到了一个奇怪的问题高图表 http www highcharts com 当图表呈现时 在您调整浏览器大小之前 不会显示列无论如何 导致图表重绘 我认为 图表的其余部分显示 轴 标题等 但不显示列本身 我在 I
  • Flot 库将 y 轴设置为最小值 0 和最大值 24

    如何将 y 轴设置在 0 到 24 的范围内 这是我的代码 j plot j placeholder d1 xaxis mode time min new Date 2010 11 01 getTime max new Date 2011
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • jQuery - 找不到函数?

    有人可以解释一下为什么下面的代码会抛出错误吗 JavaScript Document document ready function port box css display none ul portfolio li a bind clic
  • 如何删除 GMail 标签 - Google Apps 脚本

    我想从放回收件箱的每封邮件中删除 后续 标签 我尝试了几件事 但仍然没有成功 我希望有人可以帮助我或为我指明正确的方向 涉及的函数是 function moveToInbox page GmailApp moveThreadsToInbox
  • 当用户在引导日期选择器中更改月份时动态更新选项

    我在用着引导日期选择器 https github com uxsolutions bootstrap datepicker我也附加了一个监听器changeMonth https bootstrap datepicker readthedoc
  • jQuery mousemove 性能 - 节流事件?

    我们面临着与 mousemove 连接的 jQuery 事件传播性能问题 我们有一个屏幕填充画布 需要跟踪用户是否在其上拖动鼠标 因此我们在该对象上添加了一个鼠标移动侦听器 如下所示 ourCanvas on mousemove funct
  • 如何为 HTML 元素创建鼠标拖动滑块?

    我发现的许多滑块插件要么仅单击以查看下一个图像 要么如果它们确实具有鼠标拖动或触摸拖动功能 则仅允许图像 有谁知道为任何 html 元素编写鼠标拖动滑块的插件或可能的方法 我专门使用 SVG 但将来如果能在 div 元素之间滑动就更好了 H
  • Masonry - imagesLoaded - 不是函数

    Masonry and imagesLoaded应加载并正常工作 已经制作了一个类似的网站 并且可以正常运行 我不知道我的问题出在哪里 所以我希望你能看到问题所在 应该是少了点什么 在 Chrome Inspect 中 我收到以下错误 Un
  • 选择所有选项值而不是第一个

    我有一个正在运行的脚本 可以根据所选的下拉选项显示 隐藏 div 在用户在下拉列表中进行选择之前 我需要隐藏除第一个 div 之外的所有 div 根据下面的脚本 如何从除第一个选项之外的所有选项中获取值 以便隐藏除第一个 div 之外的所有
  • ajaxChosen 插件将无法工作

    我整个下午都在摆弄 ajaxChosen 因为我喜欢 Chosen 但我的选项值集变得太大了 我也尝试过 select2 但它太慢了 http harvesthq github io chosen http harvesthq github
  • jQuery 中的目标 @import 没有 ID 也没有其他属性

    我有这个 jQuery 代码 document ready function function adjustStyle width width parseInt width if width lt 701 style type text c
  • JQuery Mobile 与 MVC 的链接

    我正在使用 ASP NET MVC 3 和 Razor UI 设置 JQuery 移动网站 我正在生成我的链接 例如 a href See Group 2 a 假设我从 Home Index 访问它 我遇到的问题是 当我点击链接时 它会出现
  • 如何用另一个响应替换窗口的 URL 哈希?

    我正在尝试使用替换方法更改哈希 URL document location hash 但它不起作用 function var anchor document location hash this returns me a string va

随机推荐