2016-02-12 57 views
2

Syncano中的社交登录不适用于自定义配置文件。我用SocialAuthBackend.FACEBOOK,并通过与令牌自定义类,如:Syncano Android社交登录与自定义类导致错误

@SyncanoClass(name = "user_profile") 
public class UserProfile extends AbstractUser { 
} 

在一起:

syncano.loginSocialUser(UserProfile.class, SocialAuthBackend.FACEBOOK, loginResult.getAccessToken().getToken()).sendAsync(new SyncanoCallback<UserProfile>() { 
     //... 
}); 

这导致:

IllegalArgumentException: field com.syncano.library.data.AbstractUser.profile has type com.syncano.library.data.Profile, got com.google.gson.internal.LinkedTreeMap 
                       at java.lang.reflect.Field.set(Native Method) 
                       at java.lang.reflect.Field.set(Field.java:557) 
                       at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:119) 
                       at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:217) 
                       at com.google.gson.Gson.fromJson(Gson.java:861) 
                       at com.google.gson.Gson.fromJson(Gson.java:826) 
                       at com.google.gson.Gson.fromJson(Gson.java:775) 
                       at com.google.gson.Gson.fromJson(Gson.java:747) 

不能修复或发现任何样品在线使用此功能(或在此文档)。

回答

2

当你要声明自己的用户配置文件,你应该创建2类:

  1. 实施AbstractUser<T>(其中T是您的个人资料类名)
  2. 自己的类UserProfile类扩展Profile类(从syncano package)。

示例代码:

@SyncanoClass(name = "user_profile") 
    public class MyUserProfile extends Profile { 
     @SyncanoField(name = "avatar") 
     public SyncanoFile avatar; 
    } 

    public class CustomUser extends AbstractUser<MyUserProfile> { 
      public CustomUser(String login, String pass) { 
       super(login, pass); 
      } 
    } 

很快发布:

从4.0.6版本(不公开还),你不要再需要@SyncanoClass在配置文件(可选)注释。