如何在没有登录按钮的情况下初始化Google登录?

路人

以下代码用作使用Google登录的简单测试页

<html lang="en">
  <head>

    <script type="text/javascript">

        function onGapiLoaded() {
            auth = gapi.auth2.init({
                client_id: "REPLACE_WITH_YOUR_ID",
                scope: "profile email"

            });

            console.log( "signed in: " + auth.isSignedIn.get() );

            auth.isSignedIn.listen( function(signedIn){ console.log( "signedin: " + signedIn ) } );

            gapi.signin2.render( "signInButton", {
                'width': 230,
                'height': 50,
                'longtitle': true,
                'theme': 'dark',
                'onsuccess': onSignIn
            } );
        }

          function onSignIn(googleUser) {
            // Useful data for your client-side scripts:
            var profile = googleUser.getBasicProfile();
            console.log("Name: " + profile.getName());
          };


    </script>

    <script src="https://apis.google.com/js/platform.js?onload=onGapiLoaded" async defer></script>

  </head>
  <body>
    <div id="signInButton" class="g-signin2"></div>
  </body>
</html>

但是,如果我class="g-signin2"从登录按钮中删除或完全删除按钮,不仅按钮消失了,而且整个登录库都停止了工作-我收到了一个未捕获的异常:

无法读取未定义的属性“ init”

当我尝试拨打电话gapi.auth2.init且用户未登录时。似乎auth库依赖于dom中存在的按钮进行初始化。

我打算将其合并到我的Angular应用中,该应用将在舞台上出现任何按钮之前初始化服务中的auth lib。如果用户已经登录,则不会出现登录按钮。基于这里的行为,如果没有DOM中的一个看起来很狭窄的按钮,我将无法使用此lib。

agektmr

为了使用.auth2名称空间,您需要先加载它。合并并进行一些处理,这是我推荐的代码。

<html lang="en">
  <head>
    <script src="https://apis.google.com/js/api.js"></script>    
    <script type="text/javascript">
        function onSignIn(googleUser) {
            console.log( "signedin");
            // Useful data for your client-side scripts:
            var profile = googleUser.getBasicProfile();
            console.log("Name: " + profile.getName());
        };

        gapi.load('auth2', function() {
            gapi.auth2.init({
                client_id: "REPLACE_WITH_YOUR_ID",
                scope: "profile email" // this isn't required
            }).then(function(auth2) {
                console.log( "signed in: " + auth2.isSignedIn.get() );  
                auth2.isSignedIn.listen(onSignIn);
                var button = document.querySelector('#signInButton');
                button.addEventListener('click', function() {
                  auth2.signIn();
                });
            });
        });
    </script>
  </head>
  <body>
    <div id="signInButton"><img src="IMAGE_FILE" /></div>
  </body>
</html>

有几件事要注意:

  • 加载api.js而不是platform.js
  • 按钮资产不会自动加载,请自备
  • 如果要利用窗口小部件,则必须使用platform.js.signin2命名空间,但这是我这里不讨论的另一种方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在没有调度程序servlet的情况下初始化SpringWebAplication?

来自分类Dev

如何在没有复制构造函数的情况下初始化类的静态实例

来自分类Dev

如何在没有用户交互的情况下初始化全屏

来自分类Dev

如何在Laravel上没有get()的情况下初始化模型

来自分类Dev

如何在没有初始化的情况下声明变量

来自分类Dev

如何在不使用gcloud auth登录创建的凭据文件的情况下初始化GoogleCredentials对象

来自分类Dev

Android Facebook登录:如何在没有XML的LoginButton的情况下使用LoginManager检查登录

来自分类Dev

Android Facebook登录:如何在没有XML的LoginButton的情况下使用LoginManager检查登录

来自分类Dev

如何在没有密码和没有authorized_keys的情况下登录?

来自分类Dev

没有构造函数的情况下,对象初始化如何发生?

来自分类Dev

我如何在没有登录的情况下跟踪用户信息?

来自分类Dev

登录时如何在没有密码的情况下修改Laravel授权?

来自分类Dev

XRDP:如何在没有本地用户登录的情况下获得远程终端服务?

来自分类Dev

如何在没有移动SDK的情况下使用提供商的令牌登录

来自分类Dev

如何在没有任何用户/密码登录的情况下访问此 Samba 共享?

来自分类Dev

如何在没有密码和公钥的情况下进行 ssh 登录?

来自分类Dev

如何在没有会话/cookie/登录的情况下[半]验证用户?

来自分类Dev

如何在不使用现有Cookie的情况下初始化WKWebView

来自分类Dev

如何在不使用现有Cookie的情况下初始化WKWebView

来自分类Dev

在没有初始化的情况下进行结构初始化时的Swift初始化属性

来自分类Dev

在WPF应用程序中如何在没有主类的情况下初始化数据库(使用Entity Framework进行代码优先)

来自分类Dev

如何在没有用户(只有root)的情况下登录通用Linux发行版?

来自分类Dev

Swift用参数初始化类然后在没有参数的情况下初始化它

来自分类Dev

laravel 4:如何在没有用户名和密码的情况下登录用户

来自分类Dev

我如何在没有私钥的情况下登录另一台服务器?

来自分类Dev

如何在没有管理员权限的情况下确定Windows Powershell中的登录/注销时间?

来自分类Dev

如何在没有权限错误或无需多次登录的情况下远程查找和复制文件?

来自分类Dev

如何在没有登录内容的情况下将 DocuSign 集成到 Android 应用程序中

来自分类Dev

在没有xib文件的情况下初始化NSViewController的子类

Related 相关文章

  1. 1

    如何在没有调度程序servlet的情况下初始化SpringWebAplication?

  2. 2

    如何在没有复制构造函数的情况下初始化类的静态实例

  3. 3

    如何在没有用户交互的情况下初始化全屏

  4. 4

    如何在Laravel上没有get()的情况下初始化模型

  5. 5

    如何在没有初始化的情况下声明变量

  6. 6

    如何在不使用gcloud auth登录创建的凭据文件的情况下初始化GoogleCredentials对象

  7. 7

    Android Facebook登录:如何在没有XML的LoginButton的情况下使用LoginManager检查登录

  8. 8

    Android Facebook登录:如何在没有XML的LoginButton的情况下使用LoginManager检查登录

  9. 9

    如何在没有密码和没有authorized_keys的情况下登录?

  10. 10

    没有构造函数的情况下,对象初始化如何发生?

  11. 11

    我如何在没有登录的情况下跟踪用户信息?

  12. 12

    登录时如何在没有密码的情况下修改Laravel授权?

  13. 13

    XRDP:如何在没有本地用户登录的情况下获得远程终端服务?

  14. 14

    如何在没有移动SDK的情况下使用提供商的令牌登录

  15. 15

    如何在没有任何用户/密码登录的情况下访问此 Samba 共享?

  16. 16

    如何在没有密码和公钥的情况下进行 ssh 登录?

  17. 17

    如何在没有会话/cookie/登录的情况下[半]验证用户?

  18. 18

    如何在不使用现有Cookie的情况下初始化WKWebView

  19. 19

    如何在不使用现有Cookie的情况下初始化WKWebView

  20. 20

    在没有初始化的情况下进行结构初始化时的Swift初始化属性

  21. 21

    在WPF应用程序中如何在没有主类的情况下初始化数据库(使用Entity Framework进行代码优先)

  22. 22

    如何在没有用户(只有root)的情况下登录通用Linux发行版?

  23. 23

    Swift用参数初始化类然后在没有参数的情况下初始化它

  24. 24

    laravel 4:如何在没有用户名和密码的情况下登录用户

  25. 25

    我如何在没有私钥的情况下登录另一台服务器?

  26. 26

    如何在没有管理员权限的情况下确定Windows Powershell中的登录/注销时间?

  27. 27

    如何在没有权限错误或无需多次登录的情况下远程查找和复制文件?

  28. 28

    如何在没有登录内容的情况下将 DocuSign 集成到 Android 应用程序中

  29. 29

    在没有xib文件的情况下初始化NSViewController的子类

热门标签

归档