Spring的FacebookTemplate引发用户配置文件的权限异常

我无法继续使用iOS客户端从后台服务获取的令牌进行OAuth会话。 具体来说,它看起来是一个权限问题:

iOS客户端获取访问令牌(ObjC / FB iOS SDK v3.24)

使用以下权限建立会话:

[FBSession openActiveSessionWithReadPermissions:@[ @"email", @"user_about_me", @"user_friends", @"user_birthday", @"public_profile" . . . 

在完成的时候 。 。 。

 FBSession *session = [FBSession activeSession]; NSString *accessToken = [session.accessTokenData accessToken]; 

访问令牌发送到后端(这是春季启动+ Kotlin)

Spring的FacebookTemplate使用上面获得的令牌来实例化,如下所示:

 @Test fun testFacebookTemplate() { val facebook = FacebookTemplate("$$TOKEN_FROM_FACEBOOK_IOS_SDK$$") //Raises exception . . val profile = facebook.userOperations().userProfile println("Profile: " + profile) } 

在iOS客户端上建立的OAuth会话从后端继续成功,例如,可以返回Facebook朋友列表。 但是,试图检索配置文件,如上所示会产生一个错误:

 Error from Facebook: {"error":{"message":"(#3) Application does not have the capability to make this API call." , "type":"OAuthException","code":3,"fbtrace_id":"B4C+eS3n2PW"}} DEBUG ossfaimpl.FacebookErrorHandler - Facebook error: DEBUG ossfaimpl.FacebookErrorHandler - CODE : 3 DEBUG ossfaimpl.FacebookErrorHandler - TYPE : OAuthException 

题:

  • 缺少哪个权限来返回用户对象。 这似乎并没有记录在Spring的FacebookTemplate中
  • 在OAuth身份验证/授权期间(在我的情况下是FB iOS SDK)还是通过开发者控制台请求? 这个我不清楚,因为openActiveSessionWithPermissions和Facebook的Web控制台中的应用程序的定义都包含对这些权限的引用。

看起来好像Spring的FacebookTemplate v2.0.2.RELEASE在调用针对Facebook Graph API v2.3的用户配置文件请求时有一些权限相关的错误

作为解决方法使用:

 val profile = facebook.fetchObject("me", User::class.java, "id", "first_name", "last_name", "email");