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