2012-03-04 48 views
-1

我正在開發一個iOS應用,需要將數據發送到我正在開發的谷歌應用引擎服務器應用。 iOS應用程序的每個用戶都將使用他們的Google身份訪問應用程序的服務器部分。我正在嘗試使用漂亮的gtm-oauth library。爲了獲得我的OAuth使用者密鑰和OAuth消費者密鑰,我使用了Google的服務register my domain從iOS設備到谷歌應用引擎的Oauth用戶認證

當我創建用於訪問Google聯繫人列表的代碼時,它可以正常工作,但我無法使其與我的應用程序引擎應用程序協同工作。當我嘗試時,在驗證控制器視圖中出現錯誤「您請求的服務尚未可用,請在30秒內再試一次」。在應用引擎控制檯中,我看到/ _ah/OAuthGetAccessToken失敗的請求(我沒有提供任何此路徑)。

這裏是我的代碼:我使用的是正確的網址

-(IBAction)authButtonClicked: (id) sender { 
    [GTMHTTPFetcher setLoggingEnabled:YES]; 
    NSURL *requestURL = [NSURL URLWithString:@"https://mysite.appspot.com/_ah/OAuthGetRequestToken"]; 
    NSURL *accessURL = [NSURL URLWithString:@"https:/mysite.appspot.com/_ah/OAuthAuthorizeToken"]; 
    NSURL *authorizeURL = [NSURL URLWithString:@"https://mysite.appspot.com/_ah/OAuthGetAccessToken"]; 
    NSString *scope = @"http://mysite.appspot.com/"; 
    GTMOAuthAuthentication *auth = [self myCustomAuth]; 
    GTMOAuthViewControllerTouch *viewController; 
    viewController = [[GTMOAuthViewControllerTouch alloc] initWithScope:scope 
                  language:nil 
                requestTokenURL:requestURL 
                authorizeTokenURL:authorizeURL 
                 accessTokenURL:accessURL 
                 authentication:auth 
                   appServiceName:@"My Service" 
                   delegate:self 
                 finishedSelector:@selector(viewController:finishedWithAuth:error:)]; 
    [[self navigationController] pushViewController:viewController animated:YES]; 
} 

- (GTMOAuthAuthentication *)myCustomAuth { 
    NSString *myConsumerKey = @"mysite.appspot.com"; // from google registration 
    NSString *myConsumerSecret = @"xxxxxxxxxxxxxxx"; // from google registration 
    GTMOAuthAuthentication *auth; 
    auth = [[GTMOAuthAuthentication alloc]    initWithSignatureMethod:kGTMOAuthSignatureMethodHMAC_SHA1 
                 consumerKey:myConsumerKey 
                 privateKey:myConsumerSecret]; 
    auth.serviceProvider = @"Custom Auth Service"; 
    return auth; 
} 

是誰?範圍是否正確?什麼會導致該消息?

回答

0

我看到一對夫婦的錯誤代碼,而遺漏的方法調用:
首先,這個網址是錯誤的:

NSURL *accessURL = [NSURL URLWithString:@"https:/mysite.appspot.com/_ah/OAuthAuthorizeToken"]; 

應該不是指向:

NSURL *accessURL = [NSURL URLWithString:@"https://mysite.appspot.com/_ah/OAuthGetAccessToken"]; 

二,這個URL也是錯誤的:

NSURL *authorizeURL = [NSURL URLWithString:@"https://mysite.appspot.com/_ah/OAuthGetAccessToken"]; 

它肩d點這一個,而不是:

NSURL *authorizeURL = [NSURL URLWithString:@"https://mysite.appspot.com/_ah/OAuthAuthorizeToken"]; 

終於在myCustomAuth方法結束之前返回的添加這行代碼:

[auth setCallback:@"http://mysite.appspot.com/_my_callback"]; 

不要緊,給你點這裏回調網址的最後部分,因爲它不會在iOS設備的Safari瀏覽器中加載。
希望對你有所幫助:)

相關問題