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 に答える