3

GoogleリーダーアカウントのSID(SessionID)を正常に取得できます。フィードを取得してGoogleリーダー内で他の操作を行うには、認証トークンを取得する必要があります。私はこれを行うのに問題があります。誰かが光を当てることができますか?

//Create a cookie to append to the GET request
NSDictionary *cookieDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"SID",@"NSHTTPCookieName",self.sessionID,@"NSHTTPCookieValue",@".google.com",@"NSHTTPCookieDomain",@"/",@"NSHTTPCookiePath",nil];
NSHTTPCookie *authCookie = [NSHTTPCookie cookieWithProperties:cookieDictionary];

//The URL to obtain the Token from
NSURL *tokenURL = [NSURL URLWithString:@"http://www.google.com/reader/api/0/token"];
NSMutableURLRequest *tokenRequest = [NSMutableURLRequest requestWithURL:tokenURL];

//Not sure if this is right: add cookie to array, extract the headers from the cookie inside the array...?
[tokenRequest setAllHTTPHeaderFields:[NSHTTPCookie requestHeaderFieldsWithCookies:[NSArray arrayWithObjects:authCookie,nil]]];

//This gives me an Error 403 Forbidden in the didReceiveResponse of the delegate
[NSURLConnection connectionWithRequest:tokenRequest delegate:self];

Googleからの応答として403Forbiddenエラーが発生します。私はおそらくそれを正しくやっていない。NSHTTPCookieのドキュメントに従って辞書の値を設定しました。

4

1 に答える 1

1

Cookieプロパティのキーは、指定したリテラル文字列ではなく、NSHTTPCookie定数である必要があります。

NSDictionary *cookieDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"SID",NSHTTPCookieName,
          self.sessionID,NSHTTPCookieValue,
          @".google.com",NSHTTPCookieDomain,
          @"/",NSHTTPCookiePath,
          nil];

値の定数はそれらの名前と同じではないことに注意してください。一般的に言って、それらは「NSHTTPCookie」(例えばNSHTTPCookieDomain == @"Domain")のない名前のように見えますが、これに頼るべきではありません。ドキュメントを読み直してください。

于 2010-05-05T01:05:45.997 に答える