4

我正在尝试将 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“身份验证不匹配”用户信息 = 0x1d5cb170 {NSLocalizedDescription = 身份验证不匹配} 和身份验证对象(空)

现在我被困住了。我找不到有关“身份验证不匹配”是什么意思的任何信息?

顺便说一句,我编写的所有代码都来自 Google 开发人员门户和“如何”文档。

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

  • 双重和三重检查了 ClientID,它是正确的。
  • 更改了 Google 上的 ClientID,这会完全停止登录,所以这不是导致问题的原因。
  • 清理项目和项目文件夹。
  • 尝试使用kGTLAuthScopePlusLoginand将范围数组更改为所有可能的组合kGTLAuthScopePlusMe将范围数组更改为所有可能的组合。
  • 检查我在谷歌上的应用程序是应用程序类型“iOS”,它是。
  • 检查了应用程序上的 URL 类型,但这只会阻止应用程序在登录后被推回。
  • 这绝对不是redirect_uri_mismatch问题。问题是登录后返回给登录委托的“身份验证不匹配”。
4

1 回答 1

15

好的,解决这个问题很容易。删除一些代码。

我按照 Google Docs 的说明创建了一个登录屏幕。

我添加了GPPSignInButton并将其附加到要运行的函数中[signIn authenticate]

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

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

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

希望这可以帮助某人。

于 2013-07-08T16:34:27.363 回答