che*_*ane 3 swift stormpath swift2
我可以使用LinkedIn SDK快速获取我的LinkedIn帐户的访问令牌.如何使用Stormpath对此登录进行身份验证?
[更新]
让APIURL =" https://api.stormpath.com/v1/applications/ LI_APPLICATION_ID/accounts"
func sendRequestWithJSON(accessToken:String)
{
let json = [ "providerData" : ["providerId": "linkedin", "accessToken": accessToken] ]
do {
let jsonData = try NSJSONSerialization.dataWithJSONObject(json, options: .PrettyPrinted)
let username = STORMPATH_API_KEY_ID
let password = STORMPATH_API_KEY_SECRET
let loginString = NSString(format: "%@:%@", username, password)
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!
let base64LoginString = loginData.base64EncodedDataWithOptions(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)
// create post request
let url = NSURL(string: APIURL)!
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
// insert json data to the request
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.HTTPBody = jsonData
let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ data, response, error in
if error != nil{
print("Error -> \(error)")
return
}
do {
let result = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [String:AnyObject]
print("Result -> \(result)")
} catch {
print("Error -> \(error)")
}
}
task.resume()
//return task
} catch {
print(error)
}
}
Run Code Online (Sandbox Code Playgroud)
我将accessToken从linkedin传递到上面的函数,但它返回结果如下:
["message":需要身份验证.,"status":401,"code":401,"developerMessage":需要使用有效API密钥进行身份验证.,"moreInfo":http://www.stormpath.com/docs /快速启动/连接]
我在做什么?
LinkedIn是一个有趣的野兽,因为他们的移动SDK有两个缺点:
所以 - 为了让auth在移动设备上工作,我建议使用服务器来处理流量,所以你不必担心这两个缺点.这大致是:
声音复杂吗?它实际上比看起来更直接.我实际上使用Express.js和Swift为这个流编写了一些演示代码,如果你想试试的话.请让我知道这对你有没有用!
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |