2016-12-08 13 views
0

Googleドライブを使用して一部のファイルを同期するiOSアプリがあります。このアプリは数か月前までうまく機能していました(iCloudは同期のためにデフォルトでiCloudを使用していますので、最近までGoogleドライブが動作しなくなったことを覚えていました)。iOS搭載Googleドライブと「invalid_grant」

私は取得していますエラーは次のとおりです。

は、エラーが発生しました:エラードメイン= com.google.HTTPStatusコード= 400 "(ヌル)" のUserInfo = {JSON = { エラー= "invalid_grant" ; }、データ= < 7b0a2020 22657272 6f722220 3a202269 6e76616c 69645f67 72616e74 220a7d>}

のOAuth部分がOKであることを設定し、私は、ユーザーのGoogleドライブにアクセスすることを許可さだと思います。このエラーは、アプリケーションのために特別なディレクトリを作成する必要があるかどうかを調べるために、トップレベルのファイルを一覧表示しようとしたときに発生します。

- (void)createGoogleDocumentsDirIfNeeded:(id<GoogleServiceDelegate>)delegate 
{ 
NSString *parentID = @"root"; 

GTLQueryDrive *query = [GTLQueryDrive queryForFilesList]; 
query.q = [NSString stringWithFormat:@"'%@' in parents and title = '%@' and trashed != true", parentID, APP_NAME]; 

[googleService executeQuery:query completionHandler:^(GTLServiceTicket *ticket, 
                 GTLDriveFileList *files, 
                 NSError *error) 
{ 
    if (error == nil) 
    { 
     if (files.items.count == 0) 
     { 
      NSLog(@"Creating google documents dir: %@", APP_NAME); 
      [self createGoogleDocumentsDir:delegate]; 
     } 
     else 
     { 
      GTLDriveFile *file = [files objectAtIndexedSubscript:0]; 
      self.googleDocumentsID = file.identifier; 

      NSLog(@"Directory exists: %@; fileID = %@", APP_NAME, googleDocumentsID); 
      [delegate googleDocumentsDirCreated:YES]; 

     } 
    } 
    else 
    { 
     NSLog(@"An error occurred: %@", error); 
    } 
}]; 

}

エラーが最後のNSLogに表示されます()。

Googleの側でこれが原因で何かが変更されていると確信しています。私はそれが前に働いていたことを知っているポイントにコードを戻しましたが、それはまだ失敗しています。

Google Developer Consoleでこれを引き起こしている可能性がありますが、何が表示されないのでしょうか。

また、Google APIダッシュボードではまだ正常なアクセスがいくつか表示されているため、これは誰にとってもうってつけのことではないようです。

何が起こっている可能性について考えていますか? "invalid_grant"エラーはかなり一般的で、Web検索はそれが多くの状況で起こることを示しています。どんな助けもありがとう。

答えて

2

あなたが言うように、さまざまな説明があります。

チェックするために、いくつかは次のとおりです。 -

  1. は、ユーザーが
  2. 彼の許可を撤回したあなたはトークン期限切れのリフレッシュを使用している
  3. は、携帯電話の時計で正確な
0

読むhttps://developers.google.com/identity/protocols/OAuth2UserAgent

使用されたURLユーザーの認証はhttps://accounts.google.com/o/oauth2/v2/authです。このエンドポイントはSSL経由でアクセスでき、HTTP接続は拒否されます。 HTTPSのみのため

+0

のために接続されている。しかし私は、Webアプリケーションを書いていませんよ。これは、GoogleのSDK for iOSを使用しています。いくつかの調査の後、おそらく古いSDKはもはやサービスと互換性がなくなっているようです。古いSDKがhttpsを使用していない可能性があります:私は新しいSDKにアップグレードしようとしましたが、今はちょっと混乱しています。私は数ヶ月待ってからやり直します。 – btschumy

関連する問題