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");