gpt4 book ai didi

javascript - AuglarFire 使用路由器进行身份验证引发未知提供商错误

转载 作者:行者123 更新时间:2023-12-03 09:48:35 25 4
gpt4 key购买 nike

所以我在这里关注 firebase 文档 authentication with Routers 。相反,我使用 Ionic/ui-router 并具有抽象 View 和带有 Controller 的实际 View 。结构如下:

.state('auth', {
url: "/auth",
abstract: true,
templateUrl: "app/auth/auth.html",
resolve: {
"currentAuth": ["Auth", function(Auth){
// $waitForAuth returns a promise so the resolve waits for it to complete
return Auth.$waitForAuth();
}]
}
})
.state('auth.signin', {
url: '/signin',
views: {
'auth-signin': {
templateUrl: 'app/auth/auth-signin.html',
controller: 'SignInCtrl'
}
}
})
.state('home', {
cache: false,
abstract: true,
url: "/home",
templateUrl: "app/home/home.html",
controller: 'homeTabCtrl',
resolve: {
"currentAuth": ["Auth", function(Auth){
// $requireAuth returns a promise so the resolve waits for it to complete
// If the promise is rejected, it will throw a $stateChangeError (see above)
return Auth.$requireAuth();
}]
}
})

.state('home.courses', {
cache: false,
url: "/courses",
views: {
"tab-courses": {
templateUrl: "app/home/courses.html",
controller: "courseCtrl"
}
}
})

所以它工作得很好。当我在未登录的情况下访问 home.courses 时,我会重定向到 auth.signin。但我想在 SignInCtrl 中获取 currentAuth 返回对象/ promise 。因此,当用户登录时,如果他们进入 auth.signin 状态,它会将他们重定向到 home.courses。我按照文档说明将 currentAuth 注入(inject) Controller 中,如下所示:

(function () {
'use strict';
angular.module("myApp").controller('SignInCtrl', ['currentAuth', '$scope', '$rootScope', SignInCtrl]);

function SignInCtrl(currentAuth, $scope, $rootScope){
console.log (currentAuth);
}

})();

它抛出错误:

Error: [$injector:unpr] Unknown provider: currentAuthProvider <- currentAuth <- SignInCtrl

我做了与文档示例相同的操作,并尝试获取 currentAuth promise 对象(以便在 currentAuth 不为 NULL 时使用 if 语句将用户重定向到 home.courses)。但它不起作用:(请帮助 firebase 团队。

更新:

根据 Kato 的说法,我将无法访问 currentAuth promise 。那么,如果用户位于/auth/signin/路径中,则查看用户是否已登录并将其重定向到/home/courses/路径的传统方法是什么?

最佳答案

该错误信息非常丰富;这是 101 号路线,并且已经在 Stack Overflow 上被报道了数十次。这里的关键是理解 currentAuth 不是服务或模块(您已尝试将其作为模块和服务包含在此处),而是在调用特定路由时由解析方法注入(inject).

因此,

currentAuth 对于 /signin 路径不可用,因为该路由没有 resolve。由于以下解决方案,它可用于“home”路线:

  resolve: {
"currentAuth": ["Auth", function(Auth){

因此,您也不能在/signin 中使用该数据,除非您还为在那里注入(inject)该数据的路由创建了一个解析,这应该是多余的,因为如果 authData 为 null,您只将它们发送到/signin。

关于javascript - AuglarFire 使用路由器进行身份验证引发未知提供商错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30944694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com