7

我最近将 phonegap-facebook-plugin ( https://github.com/phonegap/phonegap-facebook-plugin ) 集成到 iOS 和 Android (同一个应用程序) 中。

我想做一些我认为很简单的事情:绕过对本机 facebook 的调用以进行登录/身份验证,并始终使用 web 对话框。如何实现这一目标?

我的登录代码目前如下所示:

初始化代码:

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

登录调用是:

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" });

谢谢你的帮助!!

4

4 回答 4

4

我创建了一个插件来促进 Facebook 和 phonegap 之间的连接,而无需将 Plugin Native 仅与 Jquery 一起使用:

https://github.com/studiosoton/faceGap

于 2013-06-12T02:35:23.560 回答
1

要绕过本机 FB 登录,您可以制作自己的手动 facebook 身份验证流程,而无需使用 Facebook 的 JavaScript SDK ( https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2 .3 ) 通过 inAppBrowser 或 ChildBrowser 插件。

您的应用程序必须启动重定向到将显示登录对话框的端点:

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

Facebook 将人们重定向到上面提到的 redirect_uri 并在 URI 片段中放置一个访问令牌以及一些其他元数据(例如令牌到期时间):

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

您的应用需要检测此重定向,然后从 URI 中读取访问令牌。然后,您可以直接跳到检查访问令牌步骤。

于 2015-06-10T00:47:14.637 回答
0

在插件的Android版本上,你可以通过修改插件在类me.facebook.authorizeloginaction中调用的方式来强制它使用对话框org.apache.cordova.facebook.ConnectPlugin

您需要传递一个附加activityCode参数Facebook.FORCE_DIALOG_AUTH

me.facebook.authorize(cordova.getActivity(), me.permissions, Facebook.FORCE_DIALOG_AUTH, new AuthorizeListener(me));

我不完全确定 iOS,但您可以尝试使用openWithBehaviorFBSessionLoginBehaviorForcingWebView

于 2013-10-24T02:16:36.040 回答
0

没有任何 Facebook 插件,您可以使用 Facebook 功能,为此使用phonegap.facebook.inappbrowser.js使用此 js 您可以轻松访问所有 Facebook 功能以获取更多信息,请访问此 URL:没有任何插件的 Facebook 集成步骤

于 2015-06-06T10:19:42.203 回答