Android LinkedIn SDK生成无法访问的令牌

jtu*_*hek 6 sdk android linkedin

我想要完成的事情:

  • 通过他们的Android SDK对LinkedIn进行身份验证
  • 获取用户的个人资料以获取他们的userId
  • 针对我们的内部服务创建新用户

到目前为止,我已经能够使用LinkedIn进行身份验证,检索访问令牌,并使用针对LinkedIn的服务获取其用户ID.

流程看起来有点像这样

LISessionManager.getInstance(activity).init(this.activity.get(), permissionScope,
            authLinkedInCallback, showDialogIfAppMissing);
Run Code Online (Sandbox Code Playgroud)

返回我的应用程序后,我使用下面的代码捕获Intent数据

LISessionManager.getInstance(activity).onActivityResult(activity, requestCode, resultCode, data);
Run Code Online (Sandbox Code Playgroud)

这部分似乎是功能性和产生一个onAuthSuccessAuthListener设置在LISessionManager初始化.

发布成功我可以使用提供的访问令牌和提供的APIHelper来获取用户的基本配置文件

String built = "https://api.linkedin.com/v1/people/~?format=json";
APIHelper.getInstance(activity.get()).getRequest(activity.get(), built, getProfileCallback);
Run Code Online (Sandbox Code Playgroud)

这实际上与基本用户配置文件信息成功返回.

这就是问题所在,我只能使用这个访问令牌来使用APIHelper进行调用.当尝试在其他地方使用提供的访问令牌(服务器端,在Postman/Apigee中进行测试)时,它总是返回此响应.

{ 
"errorCode": 0,
"message": "Unable to verify access token",
"requestId": "M9J2NBQV9J",
"status": 401,
"timestamp": 1430922872474 
}
Run Code Online (Sandbox Code Playgroud)

我一直在使用LinkedIn资源调试401问题(https://developer.linkedin.com/docs/oauth2)使用LISessionManager.评估当前会话告诉我访问令牌是

  • 还是有效
  • 尚未过期
  • 从发布之日起大约2个月仍然有效.

检查我的LinkedIn个人资料,它没有撤销对应用程序的访问权限,权限范围是basic_profile,email_address和w_share

我真的很困惑为什么这些生成的accessTokens在LinkedIn SDK之外似乎没有效果,它们在整个服务中无效吗?

任何帮助赞赏.

小智 5

如LinkedIn的Android SDK身份验证文档(https://developer.linkedin.com/docs/android-sdk-auth)所述,

移动与服务器端访问令牌

请务必注意,通过Mobile SDK获取的访问令牌仅可用于Mobile SDK,并且不能用于进行服务器端REST API调用.

同样,您已经从使用服务器端REST API调用进行身份验证的用户存储的访问令牌将无法与Mobile SDK一起使用.