Ошибка входа в Linkedin в подписанном APK (Android) - PullRequest
0 голосов
/ 06 июля 2018

Я использую 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 ]

0 голосов
/ 17 августа 2018

Перейдите в магазин Play и загрузите MODIFIED версию apk (Ваше приложение -> Версии -> Управление -> Загрузить символ рядом с иконкой apk).

Следуйте приведенным здесь инструкциям: https://ibby.ca/extract-key-hash-apk-file/. Создайте еще один ключевой хеш, преобразуйте SHA1 в значение Base64 в http://tomeko.net/online_tools/hex_to_base64.php и зарегистрируйте его в Linkedin в качестве вашего хеш-релиза.

0 голосов
/ 06 июля 2018

Поскольку эта проблема возникает только у подписанных 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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...