1

Google Oauth 2.0で新しいアクセストークンを取得するにはどうすればよいですか?

私はこれを試しました:

    NSString * urlString1 = [NSString stringWithFormat:@"https://accounts.google.com/o/oauth2/token?client_id=my_client_id&client_secret=my_client_secret&refresh_token=%@&grant_type=refresh_token",auth.refreshToken];
    NSURL * url = [NSURL URLWithString:urlString1];   
    NSMutableURLRequest * request = [[NSMutableURLRequest alloc] initWithURL:url];
    [request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPMethod:@"POST"];
    NSURLConnection * connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];
    [connection start];

ただし、結果は次のとおりです。メソッドは許可されていません(エラー405)

たぶん、新しいアクセストークンを取得する別の方法がありますか?

助けてください!ありがとう!

4

2 に答える 2

0

次のコードを使用して、Google Plus でアクセス トークンを取得してください

まず、 GTMOAuth2Authentication.hファイルの(NSString *)descriptionメソッドを置換すると、G+ アクセス トークンが確実に取得されます。

 - (NSString *)description 
 {
        NSArray *props = [NSArray arrayWithObjects:@"accessToken",nil];//[NSArray arrayWithObjects:@"accessToken", @"refreshToken",@"code", @"assertion", @"expirationDate", @"errorString",nil];
       NSMutableString *valuesStr = [NSMutableString string];
       NSString *separator = @"";
       for (NSString *prop in props) {
       id result = [self valueForKey:prop];
       if (result)
       {
          [valuesStr appendFormat:@"%@",result];
          separator = @", ";
      }
    }

 return [NSString stringWithFormat:@"%@",valuesStr];
}

.h ファイル内

@class GPPSignInButton;
@interface GPlusView : UIViewController <GPPSignInDelegate>
{
      IBOutlet GPPSignInButton *signInButton;
}

@property (retain, nonatomic) IBOutlet GPPSignInButton *signInButton;

.m ファイルで

 signInButton_.shouldFetchGoogleUserEmail = TRUE;
 signInButton_.delegate = self;

 signInButton_.clientID = [SamacharAppDelegate clientID];
 signInButton_.scope = [NSArray arrayWithObjects:
                       @"https://www.googleapis.com/auth/plus.me",
                       nil];


 -(void)finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error
 {
     if (error) {
           NSLog(@"Error = %@",error.localizedDescription);
           return;
     }
     NSLog("Auth Data = %@",auth);

   /* Auth Data =  {accessToken="ya29.AHES6ZQYLmSBc9n4pLj9U8OQrFoTDZnGLH8okPkxbda7B0Q", refreshToken="1/puItTB-sqHupfp9qPCKcb6_gWUjgcxwzc9TKJvUwMEI", expirationDate="2012-11-24 13:30:55 +0000"}  */

}

于 2012-11-24T12:32:04.637 に答える
0

HTTP 405 は、リソースで許可されていない動詞を使用しようとしていることを意味します。たとえばPOST、読み取り専用GETリソースまたはPUTのみを受け入れる書き込みリソースで を使用しますPOST

アブラハムの答えを参照してください:oauth 2を使用したGoogle

于 2012-11-24T12:33:45.407 に答える