Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修复Google OAuth 401错误无效客户端?_Javascript_Node.js_Oauth_Google Oauth_Google Developers Console - Fatal编程技术网

Javascript 如何修复Google OAuth 401错误无效客户端?

Javascript 如何修复Google OAuth 401错误无效客户端?,javascript,node.js,oauth,google-oauth,google-developers-console,Javascript,Node.js,Oauth,Google Oauth,Google Developers Console,我正在使用OAuthGoogleAPI,我得到了401错误:无效的\u客户端。 这与clientID或clientSecret代码无关,因为我确信我完全复制了密钥。我再次创建了一个新的凭证,以确保它不是GoogleAPI的问题,但错误仍然存在。当我运行服务器时,控制台中也没有收到任何错误。有人能帮我吗 这是我从浏览器收到的信息: 这是我代码的一部分: passport.use( new GoogleStrategy( { clientID: 'k

我正在使用OAuthGoogleAPI,我得到了
401错误:无效的\u客户端
。 这与clientIDclientSecret代码无关,因为我确信我完全复制了密钥。我再次创建了一个新的凭证,以确保它不是GoogleAPI的问题,但错误仍然存在。当我运行服务器时,控制台中也没有收到任何错误。有人能帮我吗

这是我从浏览器收到的信息:

这是我代码的一部分:

 passport.use(
      new GoogleStrategy(
        {
          clientID: 'keys.googleClientID',
          clienSecret: 'keys.googleClientSecret',
          callbackURL: '/auth/google/callback'
        },
        (accessToken, refreshToken, profile, done) => {
          console.log('access token', accessToken);
          console.log('refresh token', refreshToken);
          console.log('profile', profile);
        }
      )
    );

  app.get(
    '/auth/google',
    passport.authenticate('google',{
      scope: ['profile', 'email']
    })
  );
  app.get('/auth/google/callback', passport.authenticate('google'));

谢谢!:)

您应该确保启用Google+API,这可以帮助您获取从获取新密钥到设置产品名称的信息,这些信息可以在Google开发者控制台的同意屏幕部分为您的项目设置。在左侧导航中的“API和身份验证”下查看,然后选择“同意”屏幕。您还需要在产品名称上方的框中设置电子邮件地址。 在GoogleDeveloper控制台的同意屏幕中设置电子邮件地址和产品名称也可以解决此错误

如果您正在使用配置模块 就是
const config=require(“config”);
const keys=config.get('keys')
你能用模板字符串试试吗

passport.use(
谷歌新战略(
{
clientID:
${keys.googleClientID}`,在$之前和关闭之后使用反勾号}

      clientSecret: `${keys.googleClientSecret}`, //do like this for the above clientID 
      callbackURL: '/auth/google/callback'
    },
    (accessToken, refreshToken, profile, done) => {
      console.log('access token', accessToken);
      console.log('refresh token', refreshToken);
      console.log('profile', profile);
    }
  )
);
那就是backtick${keys.googleClientID}backtick我说backtick是因为stackoverflow会格式化backtick(```)

或者使用实际变量
passport.use(
谷歌新战略(
{
clientID:keys.googleClientID,
clientSecret:keys.googleClientSecret,
callbackURL:“/auth/google/callback”
},
(accessToken、refreshToken、profile、done)=>{
log('access token',accessToken);
日志('刷新令牌',刷新令牌);
console.log('profile',profile);
}
)
);

另外,您的代码中还拼错了clientSecret它是clientSecret

正如我在评论中提到的,在我看来,您发送的是“keys.googleClientID”,它不是一个有效的键,您需要发送变量的值。keys.googleClientID

 passport.use(
      new GoogleStrategy(
        {
          clientID: keys.googleClientID,
          clientSecret: keys.googleClientSecret,
          callbackURL: '/auth/google/callback'
        },
        (accessToken, refreshToken, profile, done) => {
          console.log('access token', accessToken);
          console.log('refresh token', refreshToken);
          console.log('profile', profile);
        }
      )
    );

invalid_client表示客户端id和/或secret对于您正在使用的代码无效。(未找到OAuth客户端google不适合您)因此,它显然与客户端有关。如果你确定你正确地复制了它们,并且没有在开发控制台上删除它们。你创建了什么类型的客户端?谢谢你的回答,但是你对客户端类型的意思是什么?我不是一个节点expect,但你没有发送字符串键。googleClientIDWhile此链接可能会回答问题在上,最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。-上面的代码是否与项目中的代码完全相同
 passport.use(
      new GoogleStrategy(
        {
          clientID: keys.googleClientID,
          clientSecret: keys.googleClientSecret,
          callbackURL: '/auth/google/callback'
        },
        (accessToken, refreshToken, profile, done) => {
          console.log('access token', accessToken);
          console.log('refresh token', refreshToken);
          console.log('profile', profile);
        }
      )
    );