I’m trying to do login via facebook using ionic-native, that uses the cordova-plugin-facebook4 plugin, that is forked from the phonegap-facebook-plugin plugin. I import it with import { Facebook } from 'ionic-native';
.
The 1st. problem is that I can’t use in the browser, even calling Facebook.browserInit(APP_ID, VERSION)
, but as a workaround in this case I don’t use ionic-native
. Instead, I load the script //connect.facebook.net/en_US/sdk.js
directly in my .ts
file and use the FB
object when I’m in the browser (development). It works showing a facebook modal dialog, but would be nicer if the Facebook.login
from ionic-native
handled the login when the platform is the browser
(it seems like browserInit
is specifically for that).
The 2nd. problem is that for native apps the APP_ID
is defined in the config.xml
, so I can’t just switch an enviromental variable (or a variable in a file) to use a different APP_ID
for development/production along with all other settings for the environment. I have to change the APP_ID
manually (and remember to change) in the config.xml
(or create a more complex build process to generate the config.xml
dynamically, which, for the moment, I don’t consider doing). This is not a major problem, but an option to define the APP_ID
in a .ts
file and use it dynamically (like with browserInit
) would come in hand.
The 3rd. problem is the one that must be solved. I tested with ionic run android
in an AVD
and could do the login . But when I executed to run in my android device it showed in the facebook dialog an error about fail to start session, try again later (that is, never), or something like that
. So I tried to understand what happened, and it occured because I had a facebook app in my device, but the
AVD
hadn’t. So I uninstalled my facebook and messenger apps and it worked (with the plugin login dialog, like in the AVD
). After that I can log again whenever I want with my facebook account, even after installing the facebook app again. But if the users can’t log in the first time, and need to uninstall the facebook app (inviable), that would be a huge problem.
The login call is just:
Facebook.login(['email']).then(response => response.authResponse)
I see that the problem must be happening because my app is trying to use the facebook app login, but for some reason it can’t do it right. It seems that developing directly in android I can disable it using SessionLoginBehavior.SUPPRESS_SSO
, like if the user hadn’t the facebook app.
The problem probably isn’t related to Ionic2 specifically, but with a cordova plugin, but considering that Facebook is in ionic-native
I think this is a proper place to ask.
My question is:
1) Is there a solution to this (anyone experienced this?), so that my app can use the facebook app login (when the user has the facebook app)?
2) If not, is there a way to use SessionLoginBehavior.SUPPRESS_SSO
or something similar in cordova-plugin-facebook4
(like a setting or something like that)?
Thanks in advance.