首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Facebook和Ionic 3登录-不会将我的参数带到另一个屏幕

使用Facebook和Ionic 3登录-不会将我的参数带到另一个屏幕
EN

Stack Overflow用户
提问于 2017-08-10 15:05:44
回答 1查看 414关注 0票数 1

不会将参数带到另一个屏幕。

我试图获得姓名和电子邮件,但它没有运行,所以登录运行我完美。

我希望他们能帮我

离子版本如下:

cli包:(C:\node\Ionic\taxilurin\node_modules)

代码语言:javascript
运行
复制
@ionic/cli-plugin-cordova       : 1.6.2
@ionic/cli-plugin-ionic-angular : 1.4.1
@ionic/cli-utils                : 1.7.0
ionic (Ionic CLI)               : 3.7.0

全球一揽子计划:

代码语言:javascript
运行
复制
Cordova CLI : 7.0.1

本地套餐:

代码语言:javascript
运行
复制
@ionic/app-scripts : 2.1.3
Cordova Platforms  : android 6.2.3 browser 4.1.0
Ionic Framework    : ionic-angular 3.6.0

系统:

代码语言:javascript
运行
复制
Node : v6.11.2
OS   : Windows 10
npm  : 3.10.10

我的密码主页-登录:

代码语言:javascript
运行
复制
import { Component } from '@angular/core';
//Importamos los elementos que vamos a utlizar
import { RegistroCPage } from './../RegistroCorpotativo/registroC';
import { RegistroPPage } from './../registroParticular/registroP';
import { RegistroNPage } from './../registroNuevo/registroN';
import { NativeStorage } from '@ionic-native/native-storage';
import { Facebook } from '@ionic-native/facebook';
import { NavController } from 'ionic-angular';


@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  registroCPage = RegistroCPage;
  registroPPage = RegistroPPage;
  registroNPage = RegistroNPage;

  constructor(
    private facebook: Facebook,
    public navCtrl: NavController,
    public nativeStorage: NativeStorage
  ) {

  }

  loginFacebook() {
    this.facebook.login(['public_profile', 'email'])
      .then(rta => {
        console.log(rta.status);
        if (rta.status == 'connected') {
          this.getInfo();
        };
      })
      .catch(error => {
        console.error(error);
      });
  }

  getInfo() {
    let nav = this.navCtrl;
    let env = this;
    this.facebook.api('/me?fields=id,name,email,first_name,picture,last_name,gender', ['public_profile', 'email'])
      .then(function (user) {
        env.nativeStorage.setItem('user',
          {
            name: user.name,
            gender: user.gender,
            picture: user.picture
          })
          .then(function () {
            nav.push(RegistroNPage);
          }, function (error) {
            console.log(error);
          })
      })
      .catch(error => {
        console.error(error);
      });
  }
}

我的代码de PostLogen:

代码语言:javascript
运行
复制
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { NativeStorage } from '@ionic-native/native-storage';
import { Facebook } from '@ionic-native/facebook';
import { HomePage } from './../home/home';

@Component({
    selector: 'page-registroN',
    templateUrl: 'registroN.html'
})
export class RegistroNPage {

    user: any;
    userReady: boolean = false;

    constructor(
        public navCtrl: NavController,
        public fb: Facebook,
        public nativeStorage: NativeStorage) {

    }

    ionViewCanEnter() {
        let env = this;
        this.nativeStorage.getItem('user')
            .then(function (data) {
                env.user = {
                    name: data.name,
                    gender: data.gender,
                    email: data.email,
                    picture: data.picture
                };
                env.userReady = true;
            }, function (error) {
                console.log(error);
            });
    }

    doFbLogout() {
        var nav = this.navCtrl;
        let env = this;
        this.fb.logout()
            .then(function (response) {
                //user logged out so we will remove him from the NativeStorage
                env.nativeStorage.remove('user');
                nav.push(HomePage);
            }, function (error) {
                console.log(error);
            });
    }

}

EN

Stack Overflow用户

发布于 2017-08-11 09:50:55

ionViewCanEnter()方法评估路由器是否应该将页面推入导航堆栈。此方法应返回一个布尔值(或布尔值的允诺)来执行此计算。

您实际上没有返回一个值,因此该函数正在返回undefined,计算结果始终为false,因此无法输入页面。

对代码进行以下小的更改,以返回适当的值:

代码语言:javascript
运行
复制
ionViewCanEnter() {
    let env = this;
    return this.nativeStorage.getItem('user')
        .then(function (data) {
            env.user = {
                name: data.name,
                gender: data.gender,
                email: data.email,
                picture: data.picture
            };
            env.userReady = true;
            return true;
        }, function (error) {
            console.log(error);
            return false;
        });
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45617377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档