iOS集成丁香园DXY OAuth 登陆 swift代码示例
问:iOS集成OAuth登陆分几步?
答:和把大象放冰箱里一样。
第一步:打开webview,跳转到登陆页面:
let url = "https://auth.dxy.cn/conn/oauth2/authorize?clientId=xxx&state=xxx&responseType=code&redirectUri=xxx”
webView.loadRequest(NSURLRequest(URL: NSURL(string:url)!))
第二步:在AppDelegate中,使用
func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool {}方法获取返回的code, 再通过code获取accessToken:
let requestUrl = NSURL(string: "https://auth.dxy.cn/conn/oauth2/accessToken")
let postData = "clientId=xxx&clientSecret=xxx&grantType=authorizationCode&redirectUri=xxx&code=\(code)"
let request = NSMutableURLRequest(URL: requestUrl!)
request.HTTPMethod = "POST"
request.HTTPBody = postData.dataUsingEncoding(NSUTF8StringEncoding)
第三步:通过accessToken获取用户信息,再捎带把webview关了:
let getUserInfoRequestUrl = NSURL(string: "https://auth.dxy.cn/conn/oauth2/profile")
let getUserInfoPostData = "accessToken=\(access_token)" let getUserInfoRequest = NSMutableURLRequest(URL: getUserInfoRequestUrl!)
getUserInfoRequest.HTTPMethod = "POST"
getUserInfoRequest.HTTPBody = getUserInfoPostData.dataUsingEncoding(NSUTF8StringEncoding) let getUserInfoDataTask = session.dataTaskWithRequest(getUserInfoRequest,
completionHandler: {(data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
if error != nil {
print(error?.code)
print(error?.description)
}
else {
let str = NSString(data: data!, encoding: NSUTF8StringEncoding)
do{
let userInfoResult = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions())
let id = userInfoResult["id"] as? String let viewController = self.window?.rootViewController as! ViewController
viewController.id = id
viewController.closeWebView()
}
catch {}
}
}) getUserInfoDataTask.resume()
Ok, That's it. 是不是很简单?!
iOS集成丁香园DXY OAuth 登陆 swift代码示例的更多相关文章
- IOS 集成 Bilibili IJKPlayer播放器,播放rtmp视频流
因为公司项目需要,我一个连iPhone都没用过的人竟然跑去开发iOS APP.近一段时间一直忙于赶项目,到今天差不多了,所以记录一下当时遇到的各种坑,先从ios 集成 ijkplayer播放器说起! ...
- Beautifulsoup提取特定丁香园帖子回复
DataWhale-Task3(Beautifulsoup爬取丁香园) 简要分析 完整代码 结果图 参考资料 简要分析 任务3:爬取丁香园论坛特定帖子,包括帖子主题,帖子介绍,回贴内容(用户名,用户头 ...
- iOS集成支付宝
需要企业和支付宝签约这个是需要审核的[3天左右 以邮件形式告知你] 使用支付宝进行一个完整的支付功能,大致有以下步骤: 1>先与支付宝签约,获得商户ID(partner)和账号ID(sell ...
- iOS 集成Weex入门教程
前言 自Weex发布伊始, 其口号 "Write Once, Run Everywhere"就吸引了大批前端与客户端程序猿纷纷入坑, 我也不能独善其中. 就我目前所学习Weex的经 ...
- iOS下OpenCV开发用OC还是Swift
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 其实标题中这个问题并不准确,准确的说法应该是iOS下的OpenCV开发是使用OC还是Swift ...
- iOS 集成百度地图 位置偏移问题
iOS 集成百度SDK 请参考 百度地图官方文档 ,这里不就多啰嗦了 本文介绍的是在百度地图上根据经纬度,自定义气泡时,气泡位置的偏移,在我们天朝这种事是很常见的,也见怪不怪了,在项目中使用的百度地图 ...
- 李洪强iOS之集成极光推送三iOS集成指南
李洪强iOS之集成极光推送三iOS集成指南 SDK说明 适用版本 本文匹配的 SDK版本:r2.1.5 以后.查看最近更新了解最新的SDK更新情况.使用Xcode 6及以上版本可以使用新版Push S ...
- 驰骋工作流引擎-CCMobile与安卓、IOS集成过程中的问题与解决方案
CCMobile与安卓.IOS集成过程中的问题与解决方案 前言: CCMobile(2019版本)是CCFlow&JFlow 的一款移动端审批的产品.系统基于mui框架开发,是一款可以兼容An ...
- iOS复杂动画之抽丝剥茧(Objective-C & Swift)
一.前言 随着开发者的增多和时间的累积,AppStore已经有非常多的应用了,每年都有很多新的APP产生.但是我们手机上留存的应用有限,所以如何吸引用户,成为产品设计的一项重要内容.其中炫酷的动画效果 ...
随机推荐
- Oracle 分页原理
oracle rownum 及分页处理的使用方法 在实际应用中我们经常碰到这样的问题,比如一张表比较大,我们只要其中的查看其中的前几条数据,或者对分页处理数据.在这些情况下我们都需要用到rownum. ...
- PHP图片裁剪_图片缩放_PHP生成缩略图
在制作网页过程中,为了排版整齐美观,对网页中的图片处理成固定大小尺寸的图片,或是要截去图片边角中含有水印的图片,对于图片量多,每天更新大量图,靠人工PS处理是不现实的,那么有没有自动处理图片的程序了! ...
- OpenSSL Heartbleed原因小结
User发送心跳报文给Server,Server复制心跳报文的内容回应User. memcpy(bp, p1, payload); Server拷贝心跳报文的内容给Client时,如果拷贝的字节数目超 ...
- dp、px、dpi、ppi
概念: dpi(Dots Per Inch):每英寸上的点数,最初用于衡量打印物上每英寸的点数密度,打印机在一英寸内打多少个点.DPI值越小越不精细. ppi(Pixels Per Inch):每英寸 ...
- 第三次作业——《K米评测》
第三次作业--<K米评测> 一.调研.评测 上手体验 APP的图标做的不错,一眼就知道和KTV唱歌相关的 点进去就是连接包箱的界面和直播界面,把软件最重要的两个功能展示出来了,一目了然 热 ...
- C# 解析 Json
C# 解析 json JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的 ...
- hibernate+mysql 自动生成数据库问题
Hibernate Entity类 表名注解大写时,在windows下mysql自动生成的表都为小写(不区分大小写),在linux下mysql自动生成区分大小写.导致数据库问题. 原因(window下 ...
- IE9下WebUploader上传图片跨域问题
作为前端,这一次踩到后台xml配置的坑. IE9下上传图片通过flash插件,一直发送http://192.168.0.8:8888/crossdomain.xml请求,状态码为404,原因是上传图片 ...
- JAVA抓取URL
package com.ais.plugin.analyse.test; import com.ais.plugin.analyse.util.MD5; import java.io.*; impor ...
- ASP.NET使用ConfigurationSection在Web.Config创建自定义配置节集合
核心代码 using System; using System.Data; using System.Configuration; using System.Web; using System.Web ...