Мне трудно интегрировать нативную версию Facebook с входом в социальную сеть Gigya. Я уже могу аутентифицировать пользователя, если он проходит через браузер.
Я использую код, аналогичный примерам приложений, представленным в документации Gigya.
Я попытался заменить ключи API и идентификаторы приложений в образце приложения своими ключами и идентификаторами, и я заставил собственное приложение Facebook работать, когда я использую presentNativeLogin()
, поэтому я исключил, что это мой идентификатор приложения Facebook.
Файл build.gradle уровня приложения
//Gigya
implementation files('src/main/java/com/example/myproj/libs/gigya-android-sdk-4.0.1.aar')
//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'
Манифест
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="MY APP ID" />
<meta-data
android:name="apiKey"
android:value="MY API KEY" />
<meta-data
android:name="apiDomain"
android:value="MY DOMAIN"/>
<meta-data
android:name="googleClientId"
android:value="MY CLIENT ID" />
<activity
android:name="com.gigya.android.sdk.ui.HostActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@style/Theme.AppCompat.Translucent" />
<activity
android:name="com.gigya.android.sdk.ui.WebLoginActivity"
android:allowTaskReparenting="true"
android:launchMode="singleTask"
android:theme="@style/Theme.AppCompat.Translucent">
<intent-filter android:label="web_login_redirect">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="gsapi"
android:pathPrefix="/com.example.myproj/login_result"
android:scheme="gigya" />
</intent-filter>
</activity>
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
tools:replace="android:theme" />
onCreate в моем классе приложений
public void onCreate() {
super.onCreate();
//Gigya Implementation
// Allow WebViews debugging.
WebView.setWebContentsDebuggingEnabled(true);
// Enable Gigya logs in debug mode.
GigyaLogger.setDebugMode(true);
// Crucial. Call before first instantiation of the SDK.
Gigya.setApplication(this);
Gigya.getInstance(MyAccount.class);
}
Процесс входа
private val gigya: Gigya<MyAccount> = getInstance(MyAccount::class.java)
fun processGigyaLogin(loginProvider: String) {
val providers = listOf(FACEBOOK, GOOGLE)
gigya.socialLoginWith(providers, HashMap<String, Any>(), object : GigyaLoginCallback<MyAccount>() {
override fun onSuccess(obj: MyAccount) {
// Success
Log.i("GIGYA-CDC", "Logged in using" + obj.socialProviders + " as: " + obj.profile!!.firstName + " " + obj.profile!!.lastName + ", " + obj.profile!!.email)
}
override fun onConflictingAccounts(response: GigyaApiResponse, resolver: ILinkAccountsResolver) {
Log.d("GIGYA-CDC", "onConflictingAccounts")
resolver.linkToSocial(resolver.conflictingAccounts.loginProviders[0])
}
override fun onPendingRegistration(response: GigyaApiResponse, resolver: IPendingRegistrationResolver) {
Log.d("GIGYA-CDC", "onPendingRegistration")
}
override fun onError(error: GigyaError) {
Log.e("GIGYA-CDC", error.localizedMessage + " Status Code: " + error.statusCode + " Error Code: " + error.errorCode)
}
})
}
Я также пытался сделать это в коде Java и получил те же результаты. Итак, моя текущая проблема заключается в том, что пример приложения работает с моими ключами, но когда я пытаюсь реализовать тот же код, он не работает.