capacitor-community / facebook-login

Facebook Login support
MIT License
103 stars 54 forks source link

Ionic 5 Facebook Login #13

Closed ciccilleju closed 3 years ago

ciccilleju commented 4 years ago

Hello, i'm using the capacitor facebook login with an ionic 5 app. this is a snippet of my code:

` import { Plugins } from '@capacitor/core';

export class WelcomePage implements OnInit {

constructor(private router: Router) {} async fbLogin() { const FACEBOOK_PERMISSIONS = ['public_profile', 'email']; const result = await Plugins.FacebookLogin.login({ permissions: FACEBOOK_PERMISSIONS });

  if (result && result.accessToken) {
    let user = { token: result.accessToken.token, userId: result.accessToken.userId }
    let navigationExtras: NavigationExtras = {
      queryParams: {
        userinfo: JSON.stringify(user)
      }
    };
    this.loginFacebook(result, navigationExtras)
  }
}

loginFacebook(res, navigationExtras) { console.log(res); console.log(navigationExtras);

var headers = new Headers();
headers.append("Accept", 'application/json');
headers.append('Content-Type', 'application/json');
const requestOptions = new RequestOptions({ headers: headers });

let postData = {
  "utente": {
  },
  "credentials": {
    "identifier": res.userID,
    "secret": res.accessToken
  }

}

this.http.post(this.restServices.loginFb, postData, requestOptions)
  .subscribe(data => {
    this.token = data['_body'];
    this.storage.set('token', this.token).then((val) => {
      this.storage.set('username', navigationExtras.email).then((val) => {
        this.router.navigate(['/home']);
      });
    });

  }, error => {

console.log(error); }); } } `

But the only values i'm getting back inside userinfo are token and userId, i got no name or surname and no email address.

What am I doing wrong?

thanks!

rdlabo commented 3 years ago

This may not plugin issues. Please check appsecret_proof . This is my worked code:

    return this.httpService
      .get<{
        data: IFacebook;
      }>(`https://graph.facebook.com/v5.0/me?fields=id,email,first_name,gender,last_name`, {
        params: {
          access_token: FacebookToken,
          appsecret_proof: appSecret,
        },
      })
      .pipe(
        first(),
        map((d) => d.data),
      )
      .toPromise(Promise);