Я пишу приложение для Android (Java), чтобы получить профиль LinkedIn аутентифицированного пользователя.Я регистрирую свое приложение и следую инструкциям.В режиме отладки я вошел в метод onAuthSuccess () - поэтому аутентификация прошла успешно, но
LISessionManager.getInstance (getApplicationContext ()). GetSession (). GetAccessToken (). ToString () возвращает {"expiresOn": 0} .
Помогите решить проблему с получением токена.
import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.view.View;
import com.linkedin.platform.LISession;
import com.linkedin.platform.LISessionManager;
import com.linkedin.platform.errors.LIAuthError;
import com.linkedin.platform.listeners.AuthListener;
import com.linkedin.platform.utils.Scope;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//getPackageHash();
setContentView(R.layout.activity_main);
}
public void login(View view){
//login activity
LISessionManager.getInstance(getApplicationContext()).init(this, buildScope(), new AuthListener() {
@Override
public void onAuthSuccess() {
//Do something if successful for example get a token id...
//now get user's details if success in next page
Intent intent = new Intent(MainActivity.this,Home.class);
intent.putExtra("value", LISessionManager.getInstance(getApplicationContext()).getSession().getAccessToken().toString());
//passing access token id to home page
//and now launch new activity
startActivity(intent);
}
@Override
public void onAuthError(LIAuthError error) {
//Do something if error appears
System.out.println(error.toString());
}
},true);
}
// set the permission first to retrieve basic information of user's LinkedIn account
private static Scope buildScope(){
return Scope.build(Scope.R_BASICPROFILE, Scope.R_EMAILADDRESS);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
LISessionManager.getInstance(getApplicationContext()).onActivityResult(this, requestCode, resultCode, data);
}
private void getPackageHash() {
try {
@SuppressLint("PackageManagerGetSignatures") PackageInfo info = getPackageManager().getPackageInfo(
"com.android_linkedin_integration_demo",
//give your package name here
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d(TAG, "Hash : " + Base64.encodeToString(md.digest(), Base64.NO_WRAP));//Key hash is printing in Log
}
} catch (PackageManager.NameNotFoundException e) {
Log.d(TAG, e.getMessage(), e);
} catch (NoSuchAlgorithmException e) {
Log.d(TAG, e.getMessage(), e);
}
}
}