我正在尝试使用 Gigya 回调,onPendingRegistration
因为当用户使用社交媒体登录时,我们的注册需要其他详细信息。初始社交注册工作正常,因为我可以验证用户是否存在于 Gigya 控制台中,但由于待处理的注册状态,我们特定应用程序的注册没有通过。
目前我的登录功能有回调onSuccess
,onError
和onPendingRegistration
。出于某种原因,它总是进入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");
}
});
}
我发现了问题。您需要确保本机应用程序部分正在工作以防止中断工作。所以在过去的几周里,我不得不在不使用原生 SDK 的情况下设置社交登录,因为它们仍在由不同的团队设置。总之,长话短说,一旦我开始将原生 SDK 与应用程序连接起来(即使用 Facebook 或 Google 应用程序进行身份验证),那么@Override
SDK v4 文档中的方法就开始起作用了。
正如 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());
}
});
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句