哪个版本的spring-social-facebook适用于哪个Facebook Graph API版本?

3

我如何查找spring-social-facebook使用哪个版本的Facebook Graph API?

是否有机会在spring-social-facebook中配置API版本?

我问这个问题是因为目前(2016年10月31日),spring-social-facebook的最新版本不兼容实际的facebook API。会抛出一个异常:"(#12) bio field is deprecated for versions v2.8 and higher"。

目前我只是在开发阶段 - 但我不确定如何避免在发布版本中出现此类错误。我该如何确保Facebook API的更改不会破坏我的应用程序?

1个回答

3
为了知道spring-social-facebook发布的Facebook Graph API版本,您可以查看Spring网站上的官方公告:即2.0.0.RELEASE实现了Facebook Graph API的v2.3版本,2.0.3.RELEASE实现了v2.5版本,以此类推。请注意保留HTML标签。
在spring-social-facebook的v2.0.3.RELEASE版本中引入了方法FacebookTemplate.setApiVersion(String apiVersion):您可以设置Facebook的Graph API版本,以便使用配置在您的Facebook应用程序上的相同版本。详细来说,当调用getBaseGraphApiUrl()方法时,url会根据setApiVersion方法提供的api版本动态构建("https://graph.facebook.com/v" + apiVersion + "/")。
不幸的是,虽然没有人禁止您提供大于spring-social-facebook发布的目标版本的Facebook Graph API版本,但无法保证一切正常工作(例如,您不能通过setApiVersion方法将api版本设置为2.8来解决生物字段问题),因此这不是一个解决方案。
为了回答你的最后一个问题,我建议你实现this解决方案,等待下个春季公告,当下个spring-social-facebook版本与你的facebook应用程序的api版本(我想是v2.8)完全兼容时,你就可以使用所有api(例如facebook.userOperations().getUserProfile())而没有错误。此外,你的Facebook应用程序仍将使用Facebook的Graph API v2.8(即使发布了新版本的Facebook的Graph API),然后你将使用的spring-social-facebook版本(例如在生产环境中)将继续完全兼容它。

谢谢您的快速回复!我现在更好地理解了。但是我不明白您的解决方法。我正在使用以下bean:<bean id="facebookAuthenticationService" class="com.spring.security.social.login.example.service.MyFacebookAuthenticationService"> <constructor-arg name="apiKey" value="${facebook.api.key}"/> <constructor-arg name="appSecret" value="${facebook.api.secret}"/> </bean> 这被用于<bean id="appSocialAuthenticationServiceRegistry" ...请问您的解决方法代码应该放在哪里? - olivmir
“bio field exception”会在以下情况下发生:(1)您正在使用spring-social-facebook的2.0.3.RELEASE版本,(2)您的Facebook应用程序是在05/10/2016之后创建的(具有v2.8版本),并且(3)调用getUserProfile() API或任何其他导致对"graph.facebook.com/..."进行rest调用的方法,并将"bio"字段作为查询参数。我不能排除“bio field exception”可能会在其他情况下发生,如果您在其他上下文中遇到相同的异常,请提出另一个问题,并提供所有相关信息(堆栈跟踪、您的代码等)。 - user6904265
我能用旧版本API(2.7而不是2.8)创建一个新的Facebook应用程序吗? 我的代码中有一些getUserProfile的引用,但我无法控制它们,即由其他团队管理的某些依赖jar包中。 我想知道Facebook是否会让我使用旧版API创建新应用程序,尽管我目前没找到方法。 - dozer
我认为你做不到,所有在05/10/2016之后创建的Facebook应用程序都使用v2.8图形API。此外,您无法将现有的Facebook应用程序降级到先前的图形API版本。 - user6904265
额外信息:在2016年12月,spring-social-facebook-3.0.0.M1已发布。此版本解决了废弃的bio字段问题。 - olivmir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接