如何正确实现linkedIn登录?
Posted
技术标签:
【中文标题】如何正确实现linkedIn登录?【英文标题】:How to properly implement linkedIn login ? 【发布时间】:2016-08-09 02:03:08 【问题描述】:我有一个andorid 应用程序,我正在尝试在其中实现linkedIn 登录。 LinkedIn SDK 已成功集成,我正在获取用户信息以及电子邮件地址。
以下是我的应用程序在 google 登录时的工作方式:
1) 在手机上获取访问令牌
2) 将带有访问令牌的电子邮件地址发送到服务器
3) 使用我通过谷歌的 webapi 收到的访问令牌获取用户的详细信息。
4) 如果回复电子邮件与从移动设备收到的电子邮件匹配,则检查该电子邮件地址的帐户是否存在。如果不创建帐户并登录其他明智的登录。
linkedIn 的问题:
我收到的访问令牌属于移动 SDK,我不能使用相同的令牌来发出 REST API 请求。 (as per documentation)
移动与服务器端访问令牌
请务必注意,通过 Mobile SDK 只能与 Mobile SDK 一起使用,不能用于 进行服务器端 REST API 调用。
同样,访问您已经从用户那里存储的令牌 使用服务器端 REST API 调用进行身份验证的将不起作用 使用移动 SDK。
那么如何在我的网络服务器上验证上面提到的第 3 步)中的详细信息?
这是一场灾难吗? 我确信必须有一种方法来做我想做的事情,因为有许多应用程序可以让他们的用户通过他们的移动应用程序上的linkedin 登录。
因为如果不可能,那么任何人都可以在收到来自linkedin 后轻松更改移动应用程序发送到网络服务器的电子邮件地址,我可以通过这样做使用任何我想要的电子邮件地址登录。 p>
【问题讨论】:
【参考方案1】:文档明确指出,您不能使用从 android SDK 获得的 AccessToken 进行自己的 REST API 调用。
但是有一种方法可以使用移动 SDK 进行 REST API 调用,请查看制作
经过身份验证的 REST API 调用 从这里:https://developer.linkedin.com/docs/android-sdk
如果您想检索用户个人资料信息,则必须使用移动 SDK 来完成。
【讨论】:
基本上我想验证我从他们手机收到的电子邮件以及令牌。实际上属于向我提供令牌的用户。在这种情况下,我通过linkedin 提供单点登录功能。 在这种情况下,我相信您必须通过您的 API 实现用户身份验证,从而迫使用户向您发送他的用户名和密码。这会给您的实施增加负担,因为您需要保护用户和后端之间的连接。【参考方案2】:就像你说的,你做不到。
相反,您必须使用不同的方法,在设备上获取所需的信息,由 LinkedIn 返回并将其发送到您的服务器。使用 HTTPs 连接来避免 MITM 攻击。
如果您的应用是从官方信息下载的,则不应在设备上修改。
另一种安全机制: 如果您想要更高的安全性,您可以例如加密服务器上的数据,将 HASH 发送到移动设备,使用您的 LinkedIn 令牌 来查询信息,并使用另一种算法比较接收到的数据是否相同。
但我认为这是一个过于昂贵的机制,应该只使用 HTTPS 连接来解决,而不是从非官方商店下载 APK。
【讨论】:
很抱歉,但实际上这些都无济于事。 即使是来自 Google Play 的混淆 APK 也可以这样修改以上是关于如何正确实现linkedIn登录?的主要内容,如果未能解决你的问题,请参考以下文章
有人设法在iOS上使用Firebase实现LinkedIn登录吗?
有人设法在 iOS 上使用 Firebase 实现 LinkedIn 登录吗?
适用于 ios OAuth2、API V2 的 LinkedIn 登录。如何打开已安装的 LinkedIn 应用程序