Ошибка входа в Linkedin в подписанном APK(Android)
Я использую LinkedIn Login в Android с помощью следующего кода
private void linkedInLogin() {
/*isLogin();*/
System.out.println( "insidelogin" + "linkedin" );
LISessionManager.getInstance( getApplicationContext() ).init( this, buildScope(), new AuthListener() {
@Override
public void onAuthSuccess() {
System.out.println( "sucesslogin" + "linkedin" );
accessLinkedInData();
}
@Override
public void onAuthError(LIAuthError error) {
// Handle authentication errors
System.out.println( "login_error" + error );
}
}, true );
}
private void accessLinkedInData() {
String url = "https://api.linkedin.com/v1/people/~:(id,first-name,last-name,email-address,picture-url)?format=json";
//String url = "https://api.linkedin.com/v1/people/~?format=json";
APIHelper apiHelper = APIHelper.getInstance( getApplicationContext() );
apiHelper.getRequest( this, url, new ApiListener() {
@Override
public void onApiSuccess(ApiResponse apiResponse) {
//System.out.println( "apiResponse" + apiResponse.getResponseDataAsString() );
JSONObject linkedinResponse = apiResponse.getResponseDataAsJson();
firstName = linkedinResponse.optString( "firstName" );
lastName = linkedinResponse.optString( "lastName" );
emailAddress = linkedinResponse.optString( "emailAddress" );
mLinkedInID = linkedinResponse.optString( "id" );
if (linkedinResponse.has( "pictureUrl" )) {
profilePicUrl = linkedinResponse.optString( "pictureUrl" );// profile picture for uploading sometimes it get null
}else {
profilePicUrl = "";
}
isSocialLogin = true;
socialLogin();
}
@Override
public void onApiError(LIApiError liApiError) {
// Error making GET request!
}
} );
}
private static Scope buildScope() {
return Scope.build( Scope.R_BASICPROFILE, Scope.R_EMAILADDRESS );
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Add this line to your existing onActivityResult() method
LISessionManager.getInstance( getApplicationContext() ).onActivityResult( this, requestCode, resultCode, data );
}
и сгенерировать этот хэш-ключ с помощью этого кода в режиме разработки
private void computeHash() {
try {
PackageInfo packageInfo = getPackageManager().getPackageInfo( "com.cap.connectingjobs", PackageManager.GET_SIGNATURES );
for (Signature signature : packageInfo.signatures) {
MessageDigest messageDigest = MessageDigest.getInstance( "SHA" );
messageDigest.update( signature.toByteArray() );
Log.d( "KeyHash:", Base64.encodeToString( messageDigest.digest(), Base64.DEFAULT ) );
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
В конце концов, это работает нормально, но когда я создаю хэш-ключ для окончательного выпуска, используя
keytool -exportcert -keystore YOUR_RELEASE_KEY_PATH -alias YOUR_RELEASE_KEY_ALIAS | openssl sha1 -binary | openssl base64
и добавил ключ хеша к учетной записи разработчика LinkedIn и запустите файл apk выпуска, он показывает ошибку
"errorMessage": "either bundle id or package name \/ hash are invalid, unknown, malformed", "errorCode": "UNKNOWN_ERROR"
2 ответа
Поскольку только подписанные APK имеют эту проблему, вы настроили неверное значение хеш-кода ключа разблокировки.
Попробуйте проверить хэш-значение ключа освобождения хранилища ключей, которое правильно указано в конфигурации приложения LinkedIn "имя и хэш пакета Android", правильно указанной в конфигурации приложения LinkedIn:
Создайте ключ хеш-кода
Чтобы создать хеш ключа разблокировки, используйте следующую команду:
keytool -exportcert -keystore YOUR_RELEASE_KEY_PATH -alias YOUR_RELEASE_KEY_ALIAS | openssl sha1 -binary | openssl base64
Значение конфигурации
Вы можете указать одно или несколько значений в конфигурации приложения LinkedIn, используя следующий формат через запятую:
Android.Package.Name,Key-Hash-Value
Надеюсь это поможет.
Перейдите в магазин Play и загрузите модифицированную версию apk (Ваше приложение -> Версии -> Управление -> Загрузить символ рядом со значком apk).
Следуйте инструкциям здесь: https://ibby.ca/extract-key-hash-apk-file/. Сгенерируйте еще один ключевой хеш, преобразуйте SHA1 в значение Base64 в http://tomeko.net/online_tools/hex_to_base64.php и зарегистрируйте его в Linkedin в качестве вашего хеш-релиза.