我想鏈接到的帳戶:無法對用戶進行授權使用谷歌的行動隱/授權流
這裏是我的谷歌的雲功能
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;
在谷歌操作控制檯:
我創建了隱式流程並授予了我的授權url,如下所示:
https://[region]-[projectid].cloudfunctions.net/[functionname]/auth/google
錯誤:
這是瀏覽器的URL
https://assistant.google.com/services/auth/handoffs/auth/complete?state=xxxx&code=xxxxxx
在其上顯示
以下錯誤參數 「狀態」 必須在查詢字符串設置。
更新1
開始執行此之前,我按照this解決方案創建的認證。
問題這種方法:
1.As在它不重定向到google.com的文檔說明,我無法使用JavaScript中的APIAI
SDK訪問token
。但我仍然可以在模擬器中看到Access token
。爲了更好的理解添加圖像
這裏是我的模擬器O/P
{
"response": {
"debug": {
"agentToAssistantDebug": {
"assistantToAgentDebug": {
"assistantToAgentJson": "{"accessToken\":\"xxxxxx\""
}
},
"errors": []
}
更新2:
所以我已經開始與隱流動形成,這裏是我的完整repo
我不清楚這些功能是什麼,或者是要求他們鏈接的帳戶。他們應該是OAuth2服務器嗎?他們應該被稱爲動作webhook嗎? – Prisoner
@Prisoner,是的,我試圖創建Oauth服務器,我跟着你以前的答案[this](https://stackoverflow.com/questions/44288981/how-to-authenticate-user-with-just-谷歌帳戶上的行動),讓我更新這些細節有問題,以便您可以輕鬆地通過他們 – Webruster