Facebook v3 sdk monodroid 绑定

Posted

技术标签:

【中文标题】Facebook v3 sdk monodroid 绑定【英文标题】:Facebook v3 sdk monodroid binding 【发布时间】:2013-01-09 18:05:19 【问题描述】:

有没有人尝试为第 3 版 Facebook sdk 创建新的 monodroid 绑定?我一直在使用用Monodroid Facebook Binding 创建的旧版 Facebook sdk。但新的 Facebook sdk 几乎所有这些方法都已弃用。

我在设置新绑定时遇到问题,基本上 com.facebook.android.Facebook 类现在已弃用,Facebook.Authorize 已替换为 Session。我能够创建新的 facebook sdk 的 jar 文件,但是在查看 .dll 时,Session 类没有出现在 Visual Studio 的对象浏览器中。 Session 类是公共的,并实现了 java.io.Serializable,它包含在 Mono.Android 参考中。任何帮助或建议将不胜感激。

编辑: 在搞砸了几天之后,我能够通过一个实际上并不能解决我的问题的解决方法来解决这个问题,删除 Metadata.xml 中的节点。

<remove-node path="/api/package[@name='com.facebook']/class[@name='Session.OpenRequest']/method[@name='setPermissions']"/>

这带来了其他问题,可以通过多加一些&lt;attr&gt;标签来解决。

  <remove-node path="/api/package[@name='com.facebook.model']/class[@name='PropertyName']"/>
  <attr path="/api/package[@name='com.facebook.widget']/class[@name='GraphObjectAdapter']" name="visibility">public</attr>
  <attr path="/api/package[@name='com.facebook.widget']/class[@name='GraphObjectPagingLoader']" name="visibility">public</attr>
  <attr path="/api/package[@name='com.facebook.widget']/class[@name='FacebookFragment']" name="visibility">public</attr>
  <attr path="/api/package[@name='com.facebook.widget']/class[@name='SimpleGraphObjectCursor']" name="visibility">public</attr>
  <attr path="/api/package[@name='com.facebook.widget']/interface[@name='GraphObjectCursor']" name="visibility">public</attr>

在构建此尝试后,我在 GraphObject.SectionAndItem 类中遇到了多个错误。

Error   41  Argument 1: cannot convert from 'Com.Facebook.Widget.GraphObjectAdapter.SectionAndItem.Type' to 'System.IntPtr' E:\Android\FacebookBinding\FacebookBinding\FacebookBinding\obj\Debug\generated\src\Com.Facebook.Widget.GraphObjectAdapter.cs    345 64  FacebookBinding
Error   39  Operator '!=' cannot be applied to operands of type 'Com.Facebook.Widget.GraphObjectAdapter.SectionAndItem.Type' and 'System.Type'  E:\Android\FacebookBinding\FacebookBinding\FacebookBinding\obj\Debug\generated\src\Com.Facebook.Widget.GraphObjectAdapter.cs    344 9   FacebookBinding
Error   47  Operator '==' cannot be applied to operands of type 'Com.Facebook.Widget.GraphObjectAdapter.SectionAndItem.Type' and 'System.Type'  E:\Android\FacebookBinding\FacebookBinding\FacebookBinding\obj\Debug\generated\src\Com.Facebook.Widget.GraphObjectAdapter.cs    381 9   FacebookBinding
Error   40  The best overloaded method match for 'Android.Runtime.JNIEnv.CreateInstance(System.IntPtr, string, params Android.Runtime.JValue[])' has some invalid arguments E:\Android\FacebookBinding\FacebookBinding\FacebookBinding\obj\Debug\generated\src\Com.Facebook.Widget.GraphObjectAdapter.cs    345 17  FacebookBinding

为了解决这些问题,我删除了与这些问题相关的节点。

  <remove-node path="/api/package[@name='com.facebook.widget']/class[@name='GraphObjectAdapter.SectionAndItem']"/>
  <remove-node path="/api/package[@name='com.facebook.widget']/class[@name='GraphObjectAdapter.SectionAndItem.Type']"/>

现在绑定可以成功构建。您可能认为我现在可以构建和部署我的应用程序,但出现了另一个问题。将.jar 文件和.dll 文件添加到我的应用程序后,我在构建时遇到这些错误。

Error   62   package com.facebook.widget.GraphObjectAdapter does not exist
        com.facebook.widget.GraphObjectAdapter.DataNeededListener
    E:\Android\FacebookBinding\FacebookBinding\FacebookTest\obj\Debug\android\src\mono\com\facebook\widget\GraphObjectAdapter_DataNeededListenerImplementor.java    8   41  FacebookTest
Error   63   package com.facebook.widget.GraphObjectPagingLoader does not exist
        com.facebook.widget.GraphObjectPagingLoader.OnErrorListener
    E:\Android\FacebookBinding\FacebookBinding\FacebookTest\obj\Debug\android\src\mono\com\facebook\widget\GraphObjectPagingLoader_OnErrorListenerImplementor.java  8   46  FacebookTest

我现在不知道如何在这里进行。对到达该地点的任何步骤有何建议或建议?

【问题讨论】:

【参考方案1】:

Xamarin 正在发布 Mono for Android 4.7.x 的新版本,该版本应该会公开 Facebook 在其 .jar 文件中使用的更多 Java 库。我切换到 beta 通道并尝试再次编译它,我可以使用GraphObject。我认为仍然需要对Metadata.xml 文件进行一些按摩才能将整个.jar 绑定,但这是朝着正确方向迈出的一步。

【讨论】:

【参考方案2】:

如果你使用xamarin作为IDE你可以直接从组件站点下载facebook的dll,避免绑定sdk的问题

http://components.xamarin.com/

【讨论】:

以上是关于Facebook v3 sdk monodroid 绑定的主要内容,如果未能解决你的问题,请参考以下文章

Facebook SDK v3.5.2 - 从关闭的会话中请求权限

在 facebook sdk v3.13 上分享图片和文字

当设备中安装了 FB Native App 时,无法使用 Facebook ios sdk v3 进行授权

Facebook iso sdk 增加了应用程序的大小

Facebook iOS SDK 3.2.1 授权/确认授权时的空白对话框

Facebook API V3 - 为测试用户创建 Facebook 页面