ios - 使用服务器端身份验证为 oauth.io 调用提供状态(使用 iOS SDK)

标签 ios oauth

我正在尝试通过 iOS 应用程序将 oauth.io 与 Twitter 或 Facebook 结合使用,通过服务器端身份验证。我可以使用 [_oauthio showWithProvider:providerName]; 连接到该服务,并且连接无误返回。然而,我得到的是

oauthtest://localhost#oauthio={"status":"error","message":"你必须提供服务器端认证时的状态","provider":"twitter"}

换句话说,它需要一个state参数。但是没有明显的方法可以将它添加到任何地方的调用中吗?有谁知道如何添加这个?

更新:我深入研究了 oath.io SDK,并将 &state=abc 拼接到 showProviderWith: 方法内的 URL 构造中,但这仍然给出了同样的结果:连接返回成功,但是content提示错误如上。

使用不同的提供商 Facebook,我得到完全相同的结果(当然,使用 "provider":"Facebook")

最佳答案

好的,通过查看 oauth.io Android SDK 找到了答案:有一个添加状态参数的工具,但它是一个URL 编码的 JSON 对象.所以在 iOS 查询字符串中传递它的正确方法是有一个查询参数 opts它的值(value)是{"state":"STATE_HASH_HERE"} .

带有状态值的完整查询字符串如下所示:

https://oauth.io/auth/twitter?k=<PUBLIC_KEY> &opts=%7B%22state%22%3A%22<STATE_VALUE>%22%7D &redirect_uri=OAuthTest://localhost

(其中 %7B = {, %22 = ", %3A = :, and %7D = } 用于 JSON 对象的百分比编码。)

关键元素是包裹在 opt 中范围。这些实际上都没有包含在 oauth.io iOS SDK 中。

更新:我的 pull-request 现已合并,并且有一个新方法可用于传递选项:[_oauthio showWithProvider:@"twitter" options:@{@"state": <STATE_VALUE>}]; . `

关于ios - 使用服务器端身份验证为 oauth.io 调用提供状态(使用 iOS SDK),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21833734/

相关文章:

swift - 如何使用 oauth2 和 swift 对自定义 Web 服务进行身份验证

oauth - 在 Google 电子表格 API 中使用 OAuth 2.0 授权请求

objective-c - 使用触摸手势移动、调整大小和缩放 UIView

ios - 在 MPMoviePlayerController 之上添加 View

javascript - 使用承载授权将 PouchDB 同步到 Cloudant 时出现错误

android - Android 示例的简单 JTwitter

asp.net-web-api - 在移动和网络数据存储上通过Facebook和Google注册/登录

ios - 第一次启动应用程序时纬度和经度不正确 ios

iphone - 指向 Objective-C 中的指针的指针

ios - 当我使用 AFNetworking 从 iOS 调用服务器 API 时出现 application/soap+xml 错误