我在我的ios应用程序中集成了ios sdk。因此,当我单击按钮以使用linkedin进行身份验证时,将显示一个viewcontroller,并显示输入用户名和密码的页面。现在,当我输入正确的用户名和密码时,它会返回一个包含代码和状态的URL。问题是随请求发送的状态(随机字符串)与响应url中收到的状态不同。例如,如果我发送
state = @"qwertyu"
然后返回值是
state = @"qwertyu#!"
额外#!随附。
在代码中,我正在检查发送和接收状态是否相同,因为它不相同我返回错误(这是输入正确的用户名和密码后显示的错误)。如果我删除了if条件,那么它的工作完全正常。
SYLinkedInApplication *app = [SYLinkedInApplication
applicationWithRedirectURL:self.redirectUrl
clientId:self.appKey
clientSecret:self.appSecret
state:@"<RANDOM-STRING>"
grantedAccess:@[#something];
条件
if ([self.application.state isEqualToString:receivedState]) {
//if true send success
}
所以我的问题是
1)我们是否需要if条件来检查状态?
2)如果我们需要条件那么为什么返回状态字符串不同?
希望问题很明确。
提前致谢。
答案 0 :(得分:0)
我解决了这个问题(但是使用了Ionic)。
1)是的,您应该检查状态,以防止CSRF。
2)这是我在请求授权和访问令牌时更改URL解决的问题:
从https://www.linkedin.com/uas/oauth2/authorization到https://www.linkedin.com/oauth/v2/authorization
https://www.linkedin.com/uas/oauth2/accessToken到https://www.linkedin.com/oauth/v2/accessToken
这解决了我的问题。我希望它也能解决你的问题,或其他人的问题。