我要做的是使用Firebase与Google进行身份验证。然后从Google日历中获取一些数据。
我得到了第一部分工作。我可以通过Google进行身份验证并获取用户名,电子邮件等,但是一旦我将calendar
添加到scope
,就会向我提供401 Error: invalid_scope
。
甚至可以使用Firebase获取此类数据吗?
HTML
<a href="#auth" id="auth">login please</a>
<a href="#auth" id="calendar">calendar</a>
JS
<script src="https://cdn.firebase.com/js/client/2.2.2/firebase.js"></script>
<script src="js/jquery.js"></script>
<script>
$("#auth").click(function() {
var ref = new Firebase("https://<my-super-cool-app>.firebaseio.com/");
ref.authWithOAuthPopup("google", function(error, authData) {
if (error) {
console.log("Login Failed!", error);
console.log(error);
} else {
console.log("Authenticated successfully with payload:", authData);
}
}, {
"scope": "email, calendar"
});
return false;
});
$("#calendar").click(function() {
$.getJSON('https://www.googleapis.com/calendar/v3/users/me/calendarList', function(data) {
console.log(data);
});
});
</script>
</body>
</html>
答案 0 :(得分:3)
目前,Firebase仅支持范围listed here。因此,您无法使用calendar*
范围对Firebase身份验证进行身份验证。
此处唯一真正的解决方法是避免针对Google和Firebase单独进行身份验证,而是使用请求的范围手动对Google进行身份验证,然后将该OAuth令牌传递到Firebase的authWithOAuthToken方法。
换句话说,撤消身份验证过程以使用Google登录,然后在Firebase中重新使用该令牌。
答案 1 :(得分:0)
我让它像这样工作。我只是不确定如何使用这些信息,但我让auth部分工作。希望它会帮助别人。
Auth.$authWithOAuthPopup('google', {
remember: "default",
scope: 'https://www.googleapis.com/auth/calendar',
scope: 'email'
})
.then(function (authData) {