Firebase Auth和Google日历

时间:2015-03-08 22:00:11

标签: javascript firebase

我要做的是使用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>

2 个答案:

答案 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) {