如何使用 Typescript 在 Angular 2 中实现 SignIn with Google

2024-03-09

我一直在尝试在单独的登录组件中在 Angular 2 中实现使用 Google 登录。我无法使用 Google 中提供的文档来实现它https://developers.google.com/identity/sign-in/web/sign-in https://developers.google.com/identity/sign-in/web/sign-in

当我在 index.html 文件中声明我的脚本标签和 google 回调函数时,Google 登录确实有效。但我需要一个单独的组件才能使用谷歌按钮呈现登录并接收其中的回调以进一步处理为用户接收的访问令牌


在您的应用程序中添加此行index.html file

索引.html

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

组件.ts 文件

declare const gapi: any;
  public auth2: any;
  public googleInit() {
    gapi.load('auth2', () => {
      this.auth2 = gapi.auth2.init({
        client_id: 'YOUR_CLIENT_ID.apps.googleusercontent.com',
        cookiepolicy: 'single_host_origin',
        scope: 'profile email'
      });
      this.attachSignin(document.getElementById('googleBtn'));
    });
  }
  public attachSignin(element) {
    this.auth2.attachClickHandler(element, {},
      (googleUser) => {

        let profile = googleUser.getBasicProfile();
        console.log('Token || ' + googleUser.getAuthResponse().id_token);
        console.log('ID: ' + profile.getId());
        console.log('Name: ' + profile.getName());
        console.log('Image URL: ' + profile.getImageUrl());
        console.log('Email: ' + profile.getEmail());
        //YOUR CODE HERE


      }, (error) => {
        alert(JSON.stringify(error, undefined, 2));
      });
  }

ngAfterViewInit(){
      this.googleInit();
}

模板 html 文件

<button id="googleBtn">Google</button>

查看演示Plunker http://embed.plnkr.co/n0pFS3y74EpJzwgscrBu/

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

如何使用 Typescript 在 Angular 2 中实现 SignIn with Google 的相关文章

  • Dart 中的字符串文字类型(如 TypeScript)?

    感谢 Flutter 我开始使用 Dart 而且我非常喜欢这门语言 我之前使用过 TypeScript 它提供了一些我以前从未见过的非常酷的功能 我特别喜欢的是字符串文字类型 https www typescriptlang org doc
  • Typescript:通用到特定类型

    我有一个通用类型 type GenericType key string prop1 string prop2 string prop3 number 我使用通用类型来帮助构建 类型检查我创建的新对象 const Obj1 GenericT
  • TypeError:“在严格模式函数或调用它们的参数对象上可能无法访问‘调用者’、‘被调用者’和‘参数’属性”

    每当我尝试从我的解析中调用函数时 我都会收到此错误 TypeError 调用者 被调用者 和 参数 属性可能无法在严格模式函数或调用它们的参数对象上访问我的承诺 这几天工作得很好 现在突然不起作用了 我还尝试通过承诺中的分辨率传递相同的值
  • 重定向到 Angular2 中 @CanActivate 内的不同组件

    有什么方法可以重定向到 Angular2 中的 CanActivate 不同的组件吗 截至今天 使用最新的 angular router 3 0 0 rc 1 这里有一些关于如何通过以下方式做到这一点的参考 CanActivate路线守卫
  • Angular 5 - 使用对象进行表单控制

    我目前正在开发一个由 Django 支持的 Angular 应用程序 该应用程序的一部分是它需要显示成员列表 成员数组看起来有点像这样 name John Smith id 3 score set name Jane Doe id 7 sc
  • Typescript Map 在使用其函数时抛出错误(mapobject.keys() 不是函数)

    我是 typescript 中的新蜜蜂 在我的 angular4 项目中 我收到一个 json 形式的地图对象 所以我声明了一个如下所示的类
  • TypeScript 编译速度极慢 > 12 秒

    只是把它放在那里看看其他人是否也遇到这个问题 我已经使用 webpack 作为我的构建工具 使用 typescript 构建了一个 Angular 2 应用程序 一切都运行良好 但是我注意到 typescript 编译超级超级慢 我现在只有
  • 在“FormGroup”中预填充输入字段 - Angular2

    我正在使用 Angular2 反应形式 一切正常 直到我想在表单中的字段之一中显示预填充的值 设想 页面上有多个按钮 每个按钮都会打开一个表单 其中的字段如下 Name Email Message 产品代码 gt 此值应根据服务中的每个项目
  • Plesk Windows 部署 Node.js

    我创建了一个以 Node js 作为后端的 Angular 项目 这是服务器文件结构 Home directory httpdocs node hm dist browser folder server folder server js p
  • 在 angular2 中过滤数组

    我正在研究如何在 Angular2 中过滤数据数组 我研究过使用自定义管道 但我觉得这不是我想要的 因为它似乎更适合简单的表示转换 而不是过滤大量数据 数组排列如下 getLogs Array
  • Angular 4 与 Webpack 2,动态加载脚本

    我刚刚在一个项目中尝试使用 Angular 4 和 Webpack 2 我试图在 ngOnInit 期间加载一些脚本 但遇到了一些问题 问题1 我的 ngOnInit 中有以下代码 System import node modules jq
  • 无法以角度正确导入 fireStore 模块

    我在运行 Angular 项目时收到此错误 这可能意味着库 angular fire firestore 声明 AngularFirestore 尚未被 ngcc 正确处理 或者 与 Angular Ivy 不兼容 检查是否有较新的版本 由
  • 类型“typeof Control”上不存在属性“Draw”

    我正在尝试使用传单和其他传单插件实现地图组件 问题是其他插件由于某种原因无法在 TypeScript 上运行 例如 我无法使用 leaflet draw 插件编译代码并收到错误 类型 typeof Control 上不存在属性 Draw 地
  • Ionic 2 占位符文本样式

    我正在使用 Ionic 2 rc0 开发一个应用程序 并且整个应用程序中有几个仍然需要样式设置的输入字段
  • Typescript:按值检查对象是否存在于数组中

    我有这个数据 roles roleId 69801 role ADMIN roleId 69806 role SUPER ADMIN roleId 69805 role RB roleId 69804 role PILOTE roleId
  • Angular 2在实例化子组件之前解析根组件

    当我刷新网络应用程序时 我希望它在实例化任何组件或路由之前请求潜在的登录用户数据 如果找到用户的数据 我想将其注入到我的所有其他子组件所依赖的服务中 场景 假设我有 3 个组件 应用程序 ROOT 主页和关于 如果我将此代码放在 About
  • OAuth 同意屏幕未显示

    最近在我的本地开发中实现了 Google 登录 一切工作正常 除了当我选择我的 Google 帐户之一登录时 同意屏幕不会显示 它确实获得了授权 因为我可以在中看到我的网站连接到您帐户的应用程序我的帐户部分 我已经配置好了OAuth 同意屏
  • 我如何断言某个元素不在剧作家的页面上?

    我正在测试一个包含徽标的网站 并且我想确保该徽标不会出现在某些页面上 如何断言某个元素不存在 我检查了剧作家断言文档 https playwright dev docs assertions 但它只有检查确实存在的事物的示例 async a
  • 装饰器可以更改方法的签名吗?

    考虑一个函数 function handleFoo foo number 我想要一个解析 foo 的装饰器 例如 fetchFromApi foo function handleFoo foo number where fetchFromA
  • Typescript:类类型的实例

    我的课程类型如下A Type class A constructor public a string type A Type new a string A 我想获取实例的类型A Type构造函数 以便我可以显式键入该函数 class A c

随机推荐