2

Syncano 中的社交登录不适用于自定义配置文件。我使用SocialAuthBackend.FACEBOOK并传递带有自定义类的令牌,例如:

@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)

无法修复它或使用此功能(或有关此的文档)在线查找任何示例。

4

1 回答 1

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 注释(可选)。

于 2016-02-12T19:38:26.973 回答