当前位置: 首页 > 工具软件 > sinaweiboiOS > 使用案例 >

sinaweiboios 使用

萧修永
2023-12-01

许多平台提供的 SDK 都实现了这个流程,例如 sinaweiboios 使用一个嵌入 WebView 的 modal ViewController, 而人人网 SDK 则可以选择弹出浮出层或者 push NavigationController 来显示登陆窗口。不用 SDK 的话自己实现也不难,需要在合适的地方放一个 WebView 打开登陆页面。 关键是要设置这个 WebView 的 delegate, 实现 delegate 的webView:shouldStartLoadWithRequest:navigationType: 方法, 在里面检查目标 URL 是否等于 callback redirect_url,若相等则说明授权成功,关闭 WebView 即可。这种实现方式存在以下两个明显的缺点:由于登陆页面是嵌入在 WebView 里的,用户无法判断这个页面是由平台提供的,还是 App 伪造的,丧失了 OAuth 的最大优势,用户的密码安全得不到保障;不同的 App 需要向同一个平台授权时,用户需要反复输入用户名密码。跟第一点相比,这点用户体验的损伤真不算什么。切换到 Safari 进程这种方法是切换到 Safari 进程,打开登陆页面,完成授权后再切换到 App 进程中。 例如 Instagram 绑定 Flickr,甚至 Flickr App 登陆到自己的账户都是用这种方式实现的。实现这种方法,能切换成功的关键在于 App 需要注册自己的 URL scheme, 并用一个符合此 scheme 的 URL 作为授权完毕的回调地址, 这样浏览器打开回调地址时就能返回 App。 例如我们的全国空气污染指数的 url scheme 是 dirtybeijing, 授权完成的回调地址就是 dirtybeijing://sns_authorized/weibo。 在 app delegate 中实现application:openURL:sourceApplication:annotation: (iOS ≥ 4.2) 或者application:handleOpenURL: (iOS < 4.2) 即可捕获通过 URL scheme 打开 App 的事件,从而完成 OAuth 授权的后续流程。


 类似资料: