我遇到了問題NSURLSession.sharedSession().dataTaskWithRequest(request)
。我想對一些API驗證我的應用程序,如果驗證成功,那麼應用程序將允許用戶授權健康工具包並最終從那裏獲取一些數據。最後執行的NSURLSession.sharedSession()。dataTaskWithRequest(請求)
我有這個在我的viewDidLoad()
print ("AUTHORIZING APIGEE!!!")
authorizeApigee()
if (self.errorApigee == 0) {
print ("APIGEE AUTHORIZED!")
// We cannot access the user's HealthKit data without specific permission.
print ("AUTHORIZING HEALTHKIT!!")
getHealthKitPermission()
print ("HEALTHKIT AUTORIZED!")
} else {
print ("APIGEE UNAUTHORIZED!")
}
,這是審覈功能:
// Authenticating app with Apigee Health APIx
func authorizeApigee(){
// Send HTTP GET Request
let scriptUrl = "https://fhirsandbox-prod.apigee.net/oauth/v2"
let urlWithParams = scriptUrl + "/accesstoken?grant_type=client_credentials"
let myUrl = NSURL(string: urlWithParams);
let request = NSMutableURLRequest(URL:myUrl!);
request.HTTPMethod = "POST"
// Add Basic Authorization
let username = "****"
let password = "****"
let loginString = NSString(format: "%@:%@", username, password)
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!
let base64LoginString = loginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions())
request.setValue(base64LoginString, forHTTPHeaderField: "Authorization")
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
// Check for error
if error != nil
{
self.errorApigee = 1
print("error=\(error)")
return
}
// Print out response string
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("responseString = \(responseString)")
}
task.resume()
}
的問題是,即使authorizeApigee()
被調用時,應用程序停止在NSURLSession.sharedSession().dataTaskWithRequest(request)
,超出該功能,顯然errorApigee
變量不會更新,因此它會進入授權健康工具包的授權Apigee的下一個步驟。最後,當健康工具包獲得授權時,它會返回並授權Apigee。
任何想法爲什麼這可能發生在所有? 任何提示將不勝感激!
'authorizeApigee()'是異步。所以'getHealthKitPermission()'將在它獲取請求值之前調用... – Larme
任何想法如何解決這個問題? – KeykoYume