我正在尝试将服务器端的Google+登录集成到我的iOS应用中。
这就是我所做的:
func application(application: UIApplication, openURL url: NSURL, sourceApplication: NSString?, annotation: AnyObject) -> Bool
{
return GPPURLHandler.handleURL(url, sourceApplication: sourceApplication, annotation:annotation)
}
//在视图控制器中 @IBOutlet weak var gpLoginView:GPPSignInButton!
googlePlus = GPPSignIn.sharedInstance()
googlePlus.shouldFetchGooglePlusUser = true
googlePlus.clientID = "CLIENT-ID"
googlePlus.homeServerClientID = "HOME-CLIENT-ID"
googlePlus.scopes.append(kGTLAuthScopePlusLogin)
googlePlus.delegate = self;
func finishedWithAuth(auth: GTMOAuth2Authentication!, error: NSError!)
{
if error != nil
{
println("[GoogleAuthentication] Error: \(error)")
}
else
{
var serverCode = GPPSignIn.sharedInstance().homeServerAuthorizationCode
if serverCode == nil
{
println("[GoogleAuthentication] homeServerAuthorizationCode is missing")
googlePlus.disconnect()
}
else
{
client.loginWithProvider("google", token: ["access_token" : serverCode])
{
user, error in
println("[Azure::loginWithToken] Result. User=\(user). Error=\(error).")
}
}
}
}
我的google开发者控制台中有两个凭据。一个用于iOS应用程序,另一个用于Web应用来自iOS应用程序的ClientID在googlePlus.ClientID中指定。来自Web应用程序的ClientID在homeServerClientID中指定。此外,Azure Mobile Service Identities配置中指定了相同的ClientID和Secret。
此外,还使用应用程序包的名称创建URL架构。
我得到认证的客户端部分成功通过并且能够获得homeServerAuthorizationCode,但是当我尝试执行服务器端部分时,我从azure移动服务获得错误。我得到的错误是:Error Domain = com.Microsoft.WindowsAzureMobileServices.ErrorDomain Code = -1301“服务器返回错误。” UserInfo = 0x170464c80 {NSLocalizedDescription =服务器返回错误。}。
请帮助弄清楚我做错了什么?
谢谢, 鲁