我正在尝试通过iOS应用将oauth.io与Twitter或Facebook以及服务器端身份验证配合使用。我可以使用连接到该服务[_oauthio showWithProvider:providerName];
,并且连接返回没有错误。但是,我得到的是
oauthtest://localhost#oauthio={"status":"error","message":"You must provide a state when server-side auth","provider":"twitter"}
换句话说,它需要一个state
参数。但是没有明显的方法可以将此添加到通话中的任何地方吗?有人知道如何添加吗?
更新:我挖了oath.io SDK,并&state=abc
在showProviderWith:
方法内部的URL构造中拼接了a ,但是仍然得到相同的结果:连接成功返回,但是内容指示错误如上。
使用其他提供商Facebook,我得到的结果完全相同(当然,使用"provider":"Facebook"
)
好的,通过查看oauth.io Android SDK找到了答案:有一种添加状态参数的功能,但它是作为URL编码的JSON对象。因此,在iOS查询字符串中传递它的正确方法是使查询参数opts
具有其值{"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
(其中JSON对象的百分比编码为%7B = {,%22 =“,%3A =:和%7D =}。)
关键因素是opt
参数内部的包装。实际上,oauth.io iOS SDK中均未包含任何内容。
更新:我的请求请求现已合并,并且有一个新方法可用于传递选项:[_oauthio showWithProvider:@"twitter" options:@{@"state": <STATE_VALUE>}];
。`
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句