Skip to content
This repository has been archived by the owner on Apr 5, 2022. It is now read-only.
This repository has been archived by the owner on Apr 5, 2022. It is now read-only.

Authentication Fails due to unrecognized field 'id' in WorkEntry.Project #158

Closed
sfussenegger opened this issue Apr 29, 2015 · 3 comments
Closed

Comments

@sfussenegger
Copy link
Contributor

The actual problem is that WorkEntry.Project fails to parse (see stacktrace below).

The returned data looks like this:

  "work": [
    {
      "employer": {
        "id": "{id}", 
        "name": "{name}"
      }, 
      "projects": [
        {
          "id": "{id}", 
          "name": "{name}"
        }, 
        {
          "id": "{id}", 
          "name": "{name}"
        }
      ], 
      "start_date": "{date}"
    }
  ]

The real cause however is that FacebookAdapter.setConnectionValues() fetches far too much data.

Stacktrace:

org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unrecognized field "id" (class org.springframework.social.facebook.api.WorkEntry$Project), not marked as ignorable (4 known properties: "end_date", "start_date", "description", "with"])
 at [Source: java.io.ByteArrayInputStream@3f9d6ec6; line: 1, column: 8712] (through reference chain: org.springframework.social.facebook.api.User["work"]->org.springframework.social.facebook.api.WorkEntry["projects"]->org.springframework.social.facebook.api.Project["id"]); nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "id" (class org.springframework.social.facebook.api.WorkEntry$Project), not marked as ignorable (4 known properties: "end_date", "start_date", "description", "with"])
 at [Source: java.io.ByteArrayInputStream@3f9d6ec6; line: 1, column: 8712] (through reference chain: org.springframework.social.facebook.api.User["work"]->org.springframework.social.facebook.api.WorkEntry["projects"]->org.springframework.social.facebook.api.Project["id"])
    at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.java:228) ~[spring-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.read(MappingJackson2HttpMessageConverter.java:220) ~[spring-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:95) ~[spring-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:550) ~[spring-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:518) ~[spring-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:256) ~[spring-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    at org.springframework.social.facebook.api.impl.FacebookTemplate.fetchObject(FacebookTemplate.java:214) ~[spring-social-facebook-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.social.facebook.api.impl.FacebookTemplate.fetchObject(FacebookTemplate.java:209) ~[spring-social-facebook-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.social.facebook.api.impl.UserTemplate.getUserProfile(UserTemplate.java:53) ~[spring-social-facebook-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.social.facebook.api.impl.UserTemplate.getUserProfile(UserTemplate.java:49) ~[spring-social-facebook-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.social.facebook.connect.FacebookAdapter.setConnectionValues(FacebookAdapter.java:43) ~[spring-social-facebook-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.social.facebook.connect.FacebookAdapter.setConnectionValues(FacebookAdapter.java:31) ~[spring-social-facebook-2.0.1.RELEASE.jar:2.0.1.RELEASE]
    at org.springframework.social.connect.support.AbstractConnection.setValues(AbstractConnection.java:174) ~[spring-social-core-1.1.0.RELEASE.jar:1.1.0.RELEASE]
    at org.springframework.social.connect.support.AbstractConnection.initKey(AbstractConnection.java:137) ~[spring-social-core-1.1.0.RELEASE.jar:1.1.0.RELEASE]
    at org.springframework.social.connect.support.OAuth2Connection.<init>(OAuth2Connection.java:75) ~[spring-social-core-1.1.0.RELEASE.jar:1.1.0.RELEASE]
    at org.springframework.social.connect.support.OAuth2ConnectionFactory.createConnection(OAuth2ConnectionFactory.java:91) ~[spring-social-core-1.1.0.RELEASE.jar:1.1.0.RELEASE]
    at org.springframework.social.security.provider.OAuth2AuthenticationService.getAuthToken(OAuth2AuthenticationService.java:99) ~[spring-social-security-1.1.0.RELEASE.jar:1.1.0.RELEASE]
...
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "id" (class org.springframework.social.facebook.api.WorkEntry$Project), not marked as ignorable (4 known properties: "end_date", "start_date", "description", "with"])
 at [Source: java.io.ByteArrayInputStream@3f9d6ec6; line: 1, column: 8712] (through reference chain: org.springframework.social.facebook.api.User["work"]->org.springframework.social.facebook.api.WorkEntry["projects"]->org.springframework.social.facebook.api.Project["id"])
    at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:51) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:731) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:915) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1292) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1270) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:247) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:118) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:232) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:206) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:538) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:106) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:242) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:118) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:232) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:206) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:25) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:538) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:106) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:242) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:118) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3051) ~[jackson-databind-2.4.0.jar:2.4.0]
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2206) ~[jackson-databind-2.4.0.jar:2.4.0]
    at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.java:225) ~[spring-web-4.0.4.RELEASE.jar:4.0.4.RELEASE]
    ... 66 common frames omitted
@sfussenegger
Copy link
Contributor Author

see ProjectExperience type documentation

fields:

  • id
  • description
  • end_date
  • from
  • name
  • start_date
  • with

@sfussenegger
Copy link
Contributor Author

see #159 and #160

habuma added a commit that referenced this issue Jul 27, 2015
habuma added a commit that referenced this issue Jul 27, 2015
#158 only fetch necessary profile fields for ConnectionValues
@sfussenegger
Copy link
Contributor Author

both PRs have been merged and released (2.0.2.RELEASE)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Development

No branches or pull requests

1 participant