登录后Angularfire2重定向

时间:2016-10-19 09:00:39

标签: angular firebase ionic2 firebase-authentication angularfire2

我正在使用离子2 rc0和角度2,我刚刚添加了angularfire2来使用firebse auth。

我已完成所有配置和测试(我只是看到我的用户登录了firebase控制台),但我希望在登录后重定向到其他页面。

我的登录代码:

registerUserWithGoogle() {
   console.log('Google');
   this.af.auth.login();
}

我的firebase配置是:

export const myFirebaseAuthConfig = {
   provider: AuthProviders.Google,
   method: AuthMethods.Redirect
};

所以有一种方法可以在方法login()之后重定向吗?

2 个答案:

答案 0 :(得分:4)

AngularFire2在authState中有一个名为AngularFireAuth的属性,您可以订阅该属性以获取身份验证状态更改

这是处理用户身份验证的推荐方法,因为您将订阅身份验证状态的更改,其他方法可能无法按预期工作,例如当用户刷新页面时,用户对象可能不存在。

import { AngularFireAuth } from 'angularfire2/auth';

@Component({
  templateUrl: 'app.html'
})
export class AppComponent {

  constructor(public afAuth: AngularFireAuth) {}

  ngOnInit() {
    this.afAuth.authState.subscribe(user => {
      if (user) {
        // go to home page
      } else {
        // go to login page
      }
    });
  }

}

注意:您不需要在每个页面上订阅。仅订阅AppComponent或您的应用特定根组件。

答案 1 :(得分:0)

我发现这在我的情况下会更好。

<?php
    $url = $_GET["url"];
    $curlSession = curl_init();
    curl_setopt($curlSession, CURLOPT_URL, $url);
    curl_setopt($curlSession, CURLOPT_BINARYTRANSFER, true);
    curl_setopt($curlSession, CURLOPT_RETURNTRANSFER, true);
    $returnVal = curl_exec($curlSession);
    curl_close($curlSession);

    //converting the retreived "json lookalike text" in to a json:
    $decodedText = html_entity_decode($returnVal);
    $myArray = json_decode($decodedText, true);

    //this DOES work and shows the json as an array, as described above.
    echo "<pre>";
    print_r($myArray);
    echo "</pre>";

    //BUT non of the following lines work:
    $echo = sizeof($myArray->results);
    echo "<br />".$myArray->results[1]->imre;
    echo "<br />".sizeof($myArray);
    echo "<br />".sizeof($myArray->results);
    echo "<br />".sizeof($myArray->results[1]);
    echo "<br />".sizeof($myArray[1][1]);
    echo "<br />".sizeof($myArray[0]);
    echo "<br />".sizeof($myArray[0]->results);
    echo "<br />".sizeof($myArray->imre);
    echo "<br />".sizeof($myArray[0]->results);
    echo "<br />".$myArray->results['1']->imre;
    echo "<br />".$myArray[0]->results[1]->imre;
    echo "<br />".$myArray->results[1]->imre;
    echo "<br />".sizeof($myArray->results[1]);
?>