Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Facebook Login with PhoneGap/Cordova App

I recently integrated the phonegap-facebook-plugin (https://github.com/phonegap/phonegap-facebook-plugin) into both iOS and Android (same app).

I want to do something that I believe to be simple: by-pass the call to native facebook for login/authentication and always use the web dialog. How does one go about accomplishing this?

My login code currently looks like this:

Init code:

//facebook initialization
FB.init({
    appId: 'xxxxxxxxxxxx', //'<%#= FB_APP_ID %>',//'',
    nativeInterface: CDV.FB,
    useCachedDialogs: false
});

And the login call is:

FB.login(function(response) {
                            if (response.authResponse) {
                                // connected

                                    me.signInFacebook({
                                    token: response.authResponse.accessToken,
                                    email: response.authResponse.email,
                                    success: function (data) {

                                    // hide login view and show tabview
                                     form.destroy();

                                   // continue whatever action was previously happening
                                        me.continueAction(tabIndexBack, callback);
                                    },
                                    failure: function (response) {
                                        // show errors                                      Ext.Viewport.down('tabscontainerview').setActiveItem(3);
                                    }
                                });
                            } else {
                                 //go back
                                Ext.Viewport.down('tabscontainerview').setActiveItem(3);
                                alert('fb login error');
                            }
                        },{ scope: "email" });

Thanks for your help!!

like image 836
Austin Avatar asked Apr 10 '13 21:04

Austin


2 Answers

I created a plugin to facilitate the connection between Facebook and phonegap without using Plugin Native only with Jquery:

https://github.com/studiosoton/faceGap

like image 60
Daniel Furini Avatar answered Sep 25 '22 16:09

Daniel Furini


To bypass native FB login, you can make your own manual facebook authentication flow without using JavaScript SDK of the Facebook (https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.3) via inAppBrowser or ChildBrowser plugins.

Your app must initiate a redirect to an endpoint which will display the login dialog:

 https://www.facebook.com/dialog/oauth?client_id={app-id}&redirect_uri={redirect-uri}&response_type=token&scope=email

Facebook redirects people to the redirect_uri mentioned above and places an access token along with some other metadata (such as token expiry time) in the URI fragment:

https://www.facebook.com/connect/login_success.html#
access_token=ACCESS_TOKEN...

Your app needs to detect this redirect and then read the access token out of the URI. You can then skip straight to the Inspecting access tokens step.

like image 22
Orhun Alp Oral Avatar answered Sep 23 '22 16:09

Orhun Alp Oral