Gigya Android不在登录时进入待处理注册回调

时间:2019-07-16 07:42:43

标签: android gigya

我正在尝试对onPendingRegistration使用Gigya回调,因为当用户使用社交媒体登录时,我们的注册需要其他详细信息。最初的社交注册工作正常,因为我可以验证用户是否存在于Gigya控制台中,但是由于挂起的注册状态,我们特定应用程序的注册无法进行。

当前,我的登录功能具有onSuccessonErroronPendingRegistration的回调。由于某种原因,它总是进入onError回调,但是在检查日志时,它说错误是206001,即“帐户待注册”

登录功能

public void facebookLoginTapped(View view) {
    processGigyaLogin(FACEBOOK);
}

private void processGigyaLogin(String loginProvider) {
    HashMap<String, Object> params = new HashMap<String, Object>();
    params.put("screenSet","GIGYA-RegistrationLogin");
    params.put("startScreen","gigya-complete-registration-screen");
    mGigya.login(loginProvider, new HashMap<>(), new GigyaLoginCallback<MyAccount>() {
        @Override
        public void onSuccess(MyAccount obj) {
            // Success
            Log.i("GIGYA-CDC", obj.toString());
        }

        @Override
        public void onError(GigyaError error) {
            // Fail
            Log.e("GIGYA-CDC", error.toString());
        }

        @Override
        public void onPendingRegistration(@NonNull GigyaApiResponse response, @NonNull IPendingRegistrationResolver resolver) {
            Log.d("GIGYA-CDC", "onPendingRegistration");
        }

    });
}

3 个答案:

答案 0 :(得分:3)

我发现了问题。您需要确保本机应用程序部分正常工作才能正常工作。因此,在过去的几周中,我不得不设置社交登录名而不使用本机SDK,因为它们仍由另一个团队设置。总之,长话短说,一旦我开始与该应用程序连接本机SDK(即使用Facebook或Google应用程序进行身份验证),那么SDK v4文档中的@Override方法就开始起作用。

如TalMihr先前所述,您不应在中断情况下使用screen-sets,而应使用resolver接口。我现在正在处理该问题,一旦我得到了实际的解析器对象,便会更新我的答案。

仅供参考:我目前的设置(使用Gigya SDK v 4.0.1)可实现此目的:

//Facebook
implementation 'com.facebook.android:facebook-android-sdk:4.41.0'

//Google Sign In
implementation 'com.google.android.gms:play-services-auth:16.0.1'

其他方面与示例应用程序的代码相似。

编辑:

有效!我还没有使用resolver界面来解决这个问题。有人告诉我尝试使屏幕设置正常工作,因为我们希望避免创建其他UI。它是如何工作的,在使用屏幕设置时,您需要提供其他参数。

待注册代码:

private void processGigyaLogin(String loginProvider) {
    mGigya = Gigya.getInstance(MyAccount.class);

    HashMap<String, Object> params = new HashMap<String, Object>();
    params.put("screenSet","SCREEN-SET-RegistrationLogin");
    params.put("startScreen","gigya-complete-registration-screen");

    mGigya.login(loginProvider, new HashMap<>(), new GigyaLoginCallback<MyAccount>() {
        @Override
        public void onSuccess(MyAccount obj) {
            // Success
            Log.i("GIGYA-CDC", "Logged in using" + obj.getSocialProviders() + " as: " + obj.getProfile().getFirstName() + " " + obj.getProfile().getLastName() + ", " + obj.getProfile().getEmail());
        }

        @Override
        public void onConflictingAccounts(@NonNull GigyaApiResponse response, @NonNull ILinkAccountsResolver resolver) {
            Log.d("GIGYA-CDC", "onConflictingAccounts");
        }

        @Override
        public void onPendingRegistration(@NonNull GigyaApiResponse response, @NonNull IPendingRegistrationResolver resolver) {
            Log.d("GIGYA-CDC", "onPendingRegistration");
            params.put("regToken", response.getField("regToken", String.class));
            mGigya.showScreenSet("SCREEN-SET-RegistrationLogin", false, params, new GigyaPluginCallback<MyAccount>() {
                @Override
                public void onLogin(@NonNull MyAccount obj) {
                    Log.i("GIGYA-CDC", "Logged in using" + obj.getSocialProviders() + " as: " + obj.getProfile().getFirstName() + " " + obj.getProfile().getLastName() + ", " + obj.getProfile().getEmail());
                }
            });
        }

        @Override
        public void onError(GigyaError error) {
            Log.e("GIGYA-CDC", error.getLocalizedMessage() + " Status Code: " + error.getStatusCode() + " Error Code: " + error.getErrorCode());
        }
    });
}

答案 1 :(得分:0)

如果您使用的是屏幕设置,则只需要在“注册完成”屏幕中添加所需的任何字段,然后当社交用户登录或注册时,系统会自动提示他们。注册完成屏幕可完成所有丢失的数据。

如果出于某种原因,您正在从社交用户中明确收集您从其他用户中收集的数据,而您没有从其他用户中收集数据,那么您将需要使用“ Visible When”标志来自定义注册完成屏幕您将需要检查用户注册的提供商,并将JS检查附加到“可见的时间”,然后在屏幕上添加“如果完成则关闭”选项,因此如果用户不是来自社交网络,则将绕过该选项

要根据您的错误进行其他检查,请确保移动屏幕设置注册完成屏幕包含所有 Required 架构字段(即“同意”),否则用户将无法完成注册。

ref:https://developers.gigya.com/display/GD/Screen-Sets#Screen-Sets-RegistrationFlow

答案 2 :(得分:0)

在覆盖“ onPendingRegistration”回调时,将为您提供“ IPendingRegistrationResolver”实例,可以帮助您解决此中断。 使用它来设置登录过程所需的其他相关字段。

如果您正在使用诸如“ mGigya.login(...)”调用之类的业务api,则解决故障是您的责任。提供的解析器模式仅用于此目的。 此方法不使用屏幕设置功能。<​​/ strong>

请参阅: https://developers.gigya.com/display/GD/Android+SDK+v4#AndroidSDKv4-HandlingInterruptions 有关中断处理方式的更多信息。