无法在 Google 操作中使用隐式/授权流程来授权用户

2024-03-03

我正在尝试链接到该帐户:

这是我的谷歌云功能

var AuthHandler = function() {
    this.googleSignIn = googleSignIn;
    this.googleSignInCallback = googleSignInCallback;

}

function googleSignIn(req, res, next) {
    passport = req._passport.instance;

    passport.authenticate('google',{scope: 'https://www.googleapis.com/auth/userinfo.email',
    state:"google",response_type:"token"},

    function(err, user, info) {
console.log(user);
    })(req,res,next);

};

function googleSignInCallback(req, res, next) {
    passport = req._passport.instance;
    passport.authenticate('google',function(err, user, info) {
        if(err) {
            return next(err);
        }
        if(!user) {
            return res.redirect('http://localhost:8000');
        }
        console.log(user._json.token);
        // /res.redirect('/');
       res.redirect('https://oauth-redirect.googleusercontent.com/r/xxxxxx#access_token=' + user._json.token + '&token_type=bearer&state=google')


    })(req,res,next);
};

module.exports = AuthHandler; 

在谷歌操作控制台中 :

我已经创建了隐式流程并给出了我的授权网址,如下所示:

https://[region]-[projectid].cloudfunctions.net/[functionname]/auth/google

Error :

这是浏览器网址

https://assistant.google.com/services/auth/handoffs/auth/complete?state=xxxx&code=xxxxxx

显示以下错误

参数“state”必须在查询字符串中设置。

Update 1

在开始这个实现之前,我已经遵循this https://stackoverflow.com/questions/44288981/how-to-authenticate-user-with-just-a-google-account-on-actions-on-google创建身份验证的解决方案。

这种方法的问题:

1.正如文档中所述,它没有重定向到 google.com,并且我无法访问token使用APIAIJavaScript 中的 SDK。但我仍然可以看到Access token在模拟器中。为了更好地理解添加图像

这是我的模拟器 O/P

{

  "response": {

  "debug": {
    "agentToAssistantDebug": {

    "assistantToAgentDebug": {
      "assistantToAgentJson": "{"accessToken\":\"xxxxxx\""
    }
  },
  "errors": []
}

更新2:

所以我开始使用隐式流程进行创建,这是我的完整内容repo https://github.com/Webrusterkk/AI_Implict


经过与它的斗争之后,我已经实现了它,因为没有关于创建自己的 Oauth 服务器来实现 Google Action 的适当文章,这可能对未来的用户有帮助。

授权端点

  app.get('/authorise', function(req, res) {
     req.headers.Authorization = 'Bearer xxxxxxxxxxx';
      // with your own mechanism after successful
        //login you need to create a access token for the generation of 
     //authorization code and append it to this header;

    var request = new Request(req);
    var response = new Response(res);

     oauth.authorize(request, response).then(function(success) {     
     // https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID?
      //code=AUTHORIZATION_CODE&state=STATE_STRING
      var toredirect = success.redirectUri +"?code="+success.code 
            +"&state="+request.query.state ;
      return res.redirect(toredirect);  
    }).catch(function(err){
      res.status(err.code || 500).json(err)
    }) });

令牌端点:

 app.all('/oauth/token', function(req,res,next){
    var request = new Request(req);
    var response = new Response(res);

    oauth
      .token(request,response)
      .then(function(token) {
        // Todo: remove unnecessary values in response
        return res.json(token)
      }).catch(function(err){
        return res.status(500).json(err)
      })
  });

创建此端点后,发布到 Google Cloud 功能。我用过MYSQL作为数据库使用SEQUELIZE and Oauth-Server,如果有人需要这些模型,将通过 repo 分享。

有了这个,您可以使用您自己的服务器链接帐户,该服务器实现 身份验证令牌和访问令牌

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

无法在 Google 操作中使用隐式/授权流程来授权用户 的相关文章

随机推荐

  • 运算符=的返回类型 - 引用还是值?

    从函数 operator 返回有什么区别 by reference by value 在下面的示例中 两个版本似乎都产生了正确的结果 include
  • jSeparator 外观 - 预览设计与运行文件 (netbeans)

    我有这个小问题 我正在使用 Netbeans 当我单击 预览设计 时 我看到的 jSeparators 如下所示 但是当我运行该项目时 它是这样的 我该如何解决这个问题 我希望该项目看起来像预览设计 Thanks 当您运行窗口时 JFram
  • WPF 列表框项目不自动换行

    My ListBox其中有一个可能很长的描述字段 我不想使用水平滚动条 而是想自动换行 如果我设置它就有效MaxWidth但自从ListBox更改大小我不想对值进行硬编码 最好的方法是什么 编辑 描述位于TextBlock 简化的XAML
  • xml删除php中的子节点

    我试图通过 id 属性删除 druzenje 元素 我知道要做到这一点 我必须从该元素中删除所有子节点
  • 输出到精确的流浮点数

    我的浮点数精度有问题 int main void double b 106 829599 float a b std cerr lt lt std setprecision 6 lt lt a lt lt a lt lt b lt lt b
  • phonegap运行android报错

    每当我尝试使用构建项目时phonegap run 我收到以下错误 C Users MS AwaN my app gt phonegap run android phonegap detecting Android SDK environme
  • 学习 WCF RIA 服务的最佳资源

    您正在查看哪些书籍 视频 文章来了解如何使用新发布的 Silverlight WCF RIA 服务 1 起点是http www silverlight net getstarted riaservices http www silverli
  • nginx:将 ssl 连接转发到另一台服务器

    我有一个 nginx 主服务器 决定将请求路由到的传入服务器名称 对于两个辅助服务器 此主 nginx 服务器还保存 ssl 证书和密钥 第三台服务器拥有自己的证书和密钥 因为这些证书和密钥的更新过程很频繁 我现在的问题是如何配置主 ngi
  • 设置 svnperms 预提交挂钩

    我正在尝试将 svnperms 实现到存储库中 但在一些事情上遇到了困难 pre commit具有执行权限 rwxrwxr x 1 svnadm svn 3018 May 27 10 11 pre commit 这是我在预提交中对 svnp
  • BBP 算法所需的工作精度?

    我希望在低内存环境中计算 Pi 的第 n 位数字 由于我没有可用的小数 这Python 中的纯整数 BBP 算法 http en literateprograms org Pi with the BBP formula 28Python 2
  • vuetify-loader 1.6 与 laravel mix 不兼容,vue-loader 15 目前不支持 oneOf 的 vue 规则

    我正在尝试在 laravel 上安装 vue 我相信我明白了 但是当我运行 npm run watch 或 npm run dev 时 它会生成此错误 我尝试了几件事但无法解决 Error VueLoaderPlugin Error vue
  • Excel:使用外部链接可以提高性能吗?

    我想知道使用外部链接与打开电子表格和复制单元格 使用 VBA 相比是否有性能提升 我想 Excel 必须以同样的方式打开文件 但是当我使用以下代码进行测试时 外部链接速度更快 Dim t As Double Dim rng As Range
  • 使用 Xcode 6 从命令行进行 UIAutomation 测试调用

    在新的 Xcode 版本中 从命令行运行 UIAutomation 测试似乎经常会中断 根据过去的帖子判断 由于从未使用过命令行脚本 我发现了 2012 年的这篇文章 来自命令行的自动化仪器 https stackoverflow com
  • setup.py:如何查找用户指定的括号内的附加内容

    我有一个通过 PyPI 分发的包 其中包含大量数据 PyPI 有 100MB 的限制 我想分发比这更多的数据 数据相当不变 因此在每次代码发布时不断将大量数据推送到 PyPI 似乎也很浪费 相反 我更愿意分发最少的数据 并将大数据选项作为可
  • d3:不规则/分散数据的等高线或曲面图

    我可以采用一组三元组 X Y Z 并立即使用 Python 和 matplotlib 生成一个 平滑 等高线图单次通话 to 三角轮廓 https matplotlib org examples pylab examples tricont
  • 实时调试堆栈溢出

    我有一个托管代码 Windows 服务应用程序 由于托管 StackOverFlowException 该应用程序在生产中偶尔会崩溃 我知道这一点是因为我在崩溃模式下运行了 adplus 并使用 SoS 事后分析了崩溃转储 我什至附加了 W
  • Firebase:从 UID 获取 DisplayName [重复]

    这个问题在这里已经有答案了 我将用户的显示名称存储在 Firebase Auth 中 当同一用户登录时 从 Firebase Auth 获取很简单 但是 当另一个用户登录时 当我拥有帐户的唯一 UID 用户 ID 时 如何获取帐户的显示名称
  • 在 WebApplicationFactory 的配置源中关闭“ReloadOnChange”

    这既是一个问题 也是一个答案 我已经解决了我的问题 但似乎有点不对劲 我最初的问题是在 bitbucket 管道中运行我的 ASP NET Core 集成测试 原因是System IO IOException The configured
  • 不允许 HTTPS 页面运行来自 safari-extension:// URI 的不安全内容

    我在 Safari 9 1 11601 5 17 1 的 Safari 扩展中遇到了奇怪的行为 我尝试使用 safari extension 插入一个新的 Iframe 其 src 指向扩展包中的 html 文件 如果我单击控制台中显示的错
  • 无法在 Google 操作中使用隐式/授权流程来授权用户

    我正在尝试链接到该帐户 这是我的谷歌云功能 var AuthHandler function this googleSignIn googleSignIn this googleSignInCallback googleSignInCall