Facebook Connect / phonegap - FB.init调用中的“nativeInterface”参数,它有什么作用?

时间:2011-10-14 15:16:41

标签: android facebook cordova

所以我一直试图为PhoneGap / Android运行Facebook Connect示例而没有运气。 https://github.com/davejohnson/phonegap-plugin-facebook-connect *

有一些类似的线程有同样的问题。结论是“Facebook SDK是一个移动点”​​

我使用phoneGap& amp;成功编译了以前的应用程序日食。 现在关注Android的示例*。如果我完全按照他们的建议行事。应用程序显示按钮,但单击它们时没有任何反应。

在分析代码之后我注意到了

function initFB(){
try {
    FB.init({ appId: "45253452345234523", nativeInterface: PG.FB });
    document.getElementById('data').innerHTML = "";
  } catch (e) {
    alert(e);
  }
}

有一个参数nativeInterface:PG.FB在Facebook API中没有为此调用描述.. http://developers.facebook.com/docs/reference/javascript/FB.init/

更有趣的是,当我删除此参数时..突然登录按钮进入带有错误代码API 191的Facebook页面。

所以我的问题是这个参数应该做什么?为什么它不在Facebook API中?

我在互联网上找不到有关此参数的信息。我想如果这是一个过时的FB API的情况下会有一些信息。

有什么想法吗?

谢谢,

的Marcin

1 个答案:

答案 0 :(得分:6)

“nativeInterface:PG.FB”选项是告诉PhoneGap使用本机身份验证接口而不是移动Web界面。如果您没有添加“PG.FB”选项,您将被重定向到Facebook的移动身份验证。我花了一段时间来解决这个问题,并没有很好地记录,但这就是正在发生的事情。

关于PhoneGap Facebook插件的另外两件事与最新的Facebook JavaScript SDK不同:

  1. 使用FB.login()时,您应该使用“scope”参数,但PhoneGap需要使用已弃用的“perms”参数。
  2. 当来自FB.login()的身份验证响应时,您应该获得“response.authResponse”,而是“response.session”是给出的回复。这意味着您必须使用“response.session.auth_token”而不是“response.authResponse.accessToken”来提取OAuth访问令牌。
  3. 希望他们能够更新PhoneGap Facebook插件,但是现在我使用if / else语句来检测PhoneGap是否存在。您可以使用以下方法检查PhoneGap是否已初始化:

    if(window.PhoneGap){
    // PhoneGap库已加载
    }