2012-03-22 57 views
6

我已經根據「非Google服務」的文檔設置了OAuth請求,並且我獲得了90%的工作成果。該應用程序帶來了Web視圖,我可以登錄使用我的應用程序正確的訪問令牌Instagram的和接受的範圍要求,但一旦我接受我收到以下錯誤請求:失敗的OAuth對Instagram使用gtm-oauth2

Error Error Domain=com.google.HTTPStatus Code=400 "The operation couldn’t be completed. 
(com.google.HTTPStatus error 400.)" UserInfo=0x6b7ab00 {data=<7b22636f 6465223a 20343030 2c202265 72726f72 5f747970 65223a20 224f4175 74684578 63657074 696f6e22 2c202265 72726f72 5f6d6573 73616765 223a2022 596f7520 6d757374 20696e63 6c756465 20612076 616c6964 20636c69 656e745f 69642c20 20202020 20202020 20202020 72657370 6f6e7365 5f747970 652c2061 6e642072 65646972 6563745f 75726920 70617261 6d657465 7273227d>} 
Error data: 
{ 
    code = 400; 
    "error_message" = "You must include a valid client_id, response_type, and redirect_uri parameters"; 
    "error_type" = OAuthException; 
} 

好像控制器正試圖完成對google.com而不是api.instagram.com的OAuth交易。

這裏是我的Objective-C代碼來設置和調用控制器:

static NSString *const kKeychainItemName = @"Instagram OAuth2"; 
static NSString *const kClientID = @"xxxxxxxxx"; // Removed for security 
static NSString *const kClientSecret = @"xxxxxxxxx"; // Removed for security 

static NSString *const authURLString = @"https://api.instagram.com/oauth/authorize/"; 
static NSString *const tokenURLString = @"https://api.instagram.com/oauth/authorize/"; 
static NSString *const redirectURI = @"http://google.com/NeverGonnaFindMe/"; 

... 

NSURL *tokenURL = [NSURL URLWithString:tokenURLString]; 

// Set up the OAuth request 
GTMOAuth2Authentication *auth = [GTMOAuth2Authentication 
      authenticationWithServiceProvider:@"Instagram API" 
      tokenURL:tokenURL 
      redirectURI:redirectURI 
      clientID:kClientID 
      clientSecret:kClientSecret 
     ]; 

// Specify the appropriate scope string, if any, according to the service's API documentation 
auth.scope = @"basic likes comments relationships"; 

NSURL *authURL = [NSURL URLWithString:authURLString]; 

// Display the authentication view 
GTMOAuth2ViewControllerTouch *viewController = [[GTMOAuth2ViewControllerTouch alloc] 
         initWithAuthentication:auth 
         authorizationURL:authURL 
         keychainItemName:kKeychainItemName 
         delegate:self 
         finishedSelector:@selector(viewController:finishedWithAuth:error:)              
        ]; 
// Capture the Cookie to delete later 
viewController.browserCookiesURL = [NSURL URLWithString:@"instagram.com/"]; 

// Now push our sign-in view 
[[self navigationController] pushViewController:viewController animated:YES]; 
+0

嘿你能跟我分享這個例子plz plz plz嗎? – Hiren 2012-07-10 06:31:09

+0

我在我的博客[http://ifjoshrantheworld.com/instagram-oauth-login-for-ios-objective-c](http://ifjoshrantheworld.com/instagram-oauth-login-for-ios- objective-c) – JoshOiknine 2012-07-10 22:51:57

+0

嗨喬希我登錄成功,也獲得accesstoken,但不知道如何在Instagram中分享圖像可以幫助我嗎? – Hiren 2012-07-11 04:31:56

回答