Google Plus API GPPSignIn错误代码“不匹配的身份验证”

时间:2013-07-08 15:05:10

标签: ios objective-c google-plus

我正在尝试将GooglePlus API添加到我的应用中。

我使用CocoaPods添加了Google+框架,我的应用程序中有登录按钮。

GPPSignIn对象在进行登录的视图控制器中的viewDidLoad函数中设置如下...

@property (nonatomic, strong) GPPSignIn *signIn;
...
self.signIn = [GPPSignIn sharedInstance];
self.signIn.clientID = @"blahblahmynumber.apps.googleusercontent.com";
self.signIn.scopes = @[kGTLAuthScopePlusLogin];
self.signIn.delegate = self;

[self.signIn trySilentAuthentication];

然后按下登录按钮...

- (IBAction)googleButtonPressed:(id)sender
{
    [self.signIn authenticate];
}

...和委托方法......

- (void)finishedWithAuth: (GTMOAuth2Authentication *)auth
                   error: (NSError *) error
{
    NSLog(@"Received error %@ and auth object %@",error, auth);
}

这一切似乎都有效,我被推到谷歌登录并确认访问我的帐户然后我被推回到应用程序并且控制台显示...

  

收到错误错误域= com.google.GooglePlusPlatform代码= -1“不匹配的身份验证”UserInfo = 0x1d5cb170 {NSLocalizedDescription =不匹配的身份验证}和身份验证对象(null)

现在我被卡住了。我找不到任何有关“不匹配的身份验证”的含义的信息?

BTW,我编写的所有代码都来自Google开发人员门户网站和“如何”文档。

到目前为止我尝试过的事情

  • 对ClientID进行了双重和三重检查,这是正确的。
  • 更改了Google上的ClientID,这会完全停止登录,因此不会导致此问题。
  • 清理项目和项目文件夹。
  • 尝试使用kGTLAuthScopePlusLoginkGTLAuthScopePlusMe将范围数组更改为所有可能的组合。
  • 检查我在google上的应用是否属于应用类型“iOS”并且是。
  • 检查了应用中的网址类型,但这只会阻止应用在登录后被推回。
  • 这绝对不是redirect_uri_mismatch问题。问题是登录后返回登录代理的“不匹配的身份验证”。

1 个答案:

答案 0 :(得分:15)

好的,修复这个很容易。删除一些代码。

我按照Google文档了解如何在屏幕上创建登录信息。

我添加了GPPSignInButton并将其附加到一个函数中以运行[signIn authenticate]

然而,这是我出错的地方。 GPPSignInButton内置了此函数。不知何故,通过使其运行完全相同的函数,它会导致出现此错误。

修复很简单。只需删除按钮上的操作即可。该按钮看起来没有任何功能,但它实际上可以作为登录按钮正常工作。

在文档中,它说要使用[self.signIn authenticate];来启动登录过程。它并没有说如果你使用GPPSignInButton它会自动执行此操作。 Grr :(无论如何,我现在通过删除代码来修复它...

希望这有助于某人。