首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cordova-4 Facebook登录不能在iOS上打开

cordova-4 Facebook登录不能在iOS上打开
EN

Stack Overflow用户
提问于 2019-02-16 20:24:25
回答 1查看 1.9K关注 0票数 1

我对cordova-plugin-facebook4 (https://github.com/jeduan/cordova-plugin-facebook4)在iOS设备上有个问题。按照文档("iOS指南“)中所示的安装过程并在Facebook控制台中正确配置应用程序之后,当我单击Facebook登录按钮nothing 后。XCODE控制台输出以下错误:

2019-02-15 17:22:58.678937+0100 HelloCordovaApp[59179:1228209] Logging in with CORDOVA ... 2019-02-15 17:22:58.692742+0100 HelloCordovaApp[59179:1228209] Checking login status: unknown 2019-02-15 17:22:58.692947+0100 HelloCordovaApp[59179:1228209] Performing Fb login ... 2019-02-15 17:22:58.693087+0100 HelloCordovaApp[59179:1228209] Starting login 2019-02-15 17:22:58.693271+0100 HelloCordovaApp[59179:1228209] *** WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: <NSInvalidArgumentException> Permissions should each be specified in separate string values in the array. 2019-02-15 17:22:58.694627+0100 HelloCordovaApp[59179:1228209] Client application failed to make a policy decision via WebPolicyDecisionListener, using defaultPolicy 2

我开发的应用程序是用AngularJs编写的,它是用Cordova包装的。会是什么?在Android设备上,它工作得非常完美..。下面是用户单击我的Facebook登录按钮时执行的代码:

代码语言:javascript
复制
function fbLoginButtonClick(){
    console.log('Logging in with CORDOVA ...');
    facebookConnectPlugin.getLoginStatus(_fbLoginStatusSuccess, _fbLoginStatusError);
}

////////

function _fbLoginStatusSuccess(response) {
    var responseStatus = response.status;
    console.log('Checking login status: ', responseStatus);
    if (responseStatus === 'connected') {
      _fbLoginSuccess();
    } else if (responseStatus !== null) {
      _doFbLogin();
    } else {
      handleFacebookError(responseStatus);
    }
 }

function _fbLoginStatusError(error) {
    handleFacebookError(error);
}   

function _doFbLogin() {
    console.log('Performing Fb login ...');
    facebookConnectPlugin.login(['email, public_profile'], _fbLoginSuccess, _fbLoginError);
}

function _fbLoginSuccess(result) {
    console.log('Fb API: getting user data ...');
    facebookConnectPlugin.api('/me?fields=id,name,first_name,last_name,email', ['email', 'public_profile'], _fbApiSuccess, _fbApiError);
}

function _fbLoginError(error) {
    handleFacebookError(error);
}  

function _fbApiSuccess(userData) {
    alert('User Authenticated!!');
    //redirect to admin page
}

function _fbApiError(error) {
    handleFacebookError(error);
}

function handleFacebookError (error) {
  if(error){
    console.log(error);
  }
}

这是我的config.xml文件上的配置:

代码语言:javascript
复制
<plugin name="cordova-plugin-facebook4" spec="4.2.1">
    <variable name="APP_ID" value="************" />
    <variable name="APP_NAME" value="HelloCordovaApp" />
    <variable name="FACEBOOK_HYBRID_APP_EVENTS" value="false" />
    <variable name="FACEBOOK_ANDROID_SDK_VERSION" value="4.40.0" />
</plugin>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-17 11:28:39

我花了一段时间才弄清楚这一点,基本上错误是您传递给SDK的权限类型不对。下面是如何解决这个问题的方法:

替换这一行:

代码语言:javascript
复制
facebookConnectPlugin.login(['email, public_profile'], _fbLoginSuccess, _fbLoginError);

通过以下方式:

代码语言:javascript
复制
var perms = new Array("email","public_profile");
facebookConnectPlugin.login(perms, _fbLoginSuccess, _fbLoginError);

这应该能帮你解决问题。祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54727312

复制
相关文章

相似问题

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