已签名APK(Android)中的Linkedin登录错误

已签名APK(Android)中的Linkedin登录错误,android,login,linkedin,linkedin-api,malformed,Android,Login,Linkedin,Linkedin Api,Malformed,我在android中使用LinkedIn登录,代码如下 private void linkedInLogin() { /*isLogin();*/ System.out.println( "insidelogin" + "linkedin" ); LISessionManager.getInstance( getApplicationContext() ).init( this, buildScope(), new AuthListener() { @Ov

我在android中使用LinkedIn登录,代码如下

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"

由于只有已签名的APK存在此问题,因此您配置的释放密钥哈希值不正确

尝试检查在您的应用程序配置中正确列出的“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 store,下载apk的修改版(你的应用->版本->管理->下载符号靠近apk图标)


请按照此处的说明进行操作:。生成另一个密钥散列,在中将SHA1转换为Base64值,并在Linkedin中将其注册为发布散列。

谢谢。。。问题在于生成释放密钥散列。1) 创建已签名的PK 2)创建哈希键3)将哈希键添加到链接中谢谢您的回答!虽然这可以回答问题,但如果资源消失,仅链接的答案可能会无效。最好将一些说明复制到这个答案上,以确保未来的用户从您的工作中同样受益。