2012-03-17 11 views
0

ここでは、小さなReddit APIの問題が発生しています。私はここで概説として、のredditのAPIに従うことをしようとしています:error.USER_REQUIREDは、objective-cでRedditリンクを送信しようとしたときに生成されました

NSString *user = [[NSString alloc]initWithString:[userFld text]]; 
NSString *passwd = [[NSString alloc]initWithString:[passwordFld text]]; 
NSString *urlString = [NSString stringWithFormat:@"http://www.reddit.com/api/login/username/?user=%@&passwd=%@", 
         [user stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], 
         [passwd stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

NSURL *url = [NSURL URLWithString:urlString]; 

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; 
[request setHTTPMethod:@"POST"]; 
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

私が抽出し、そこから結果を与える:シンプルNSMutableURLRequestを使用して

https://github.com/reddit/reddit/wiki/API

ロギングは問題ではありませんユーザーMOD-ハッシュ:

4029916%2C2010-04-30T22%3A51%3A52%2C1243925043100000000000000000000000000000 

次私が使用して、投稿しようとしています:

しかし
NSString *redditUrlString = [NSString stringWithFormat: 
    @"http://www.reddit.com/api/submit/?uh=%@&kind=link&url=%@&sr=%@&title=%@&r=%@&api_type=json", 
    [appDelegate globalUhString], 
    @"www.google.com", 
    @"funny", 
    @"Google.com", 
    @"funny"]; 

NSURL *url = [NSURL URLWithString:redditUrlString]; 

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; 
[request setHTTPMethod:@"POST"]; 
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

、私はJSONレスポンスは、私はいつもは私がMOD-ハッシュとして使用しているものに関係なく、以下のエラーが表示さ、この接続から受信したデータを形成抽出する場合:

[」.ERRORを.USER_REQUIRED]]

私が間違ってやったことを誰かが説明できますか?

答えて

1

uhパラメータとともにreddit_sessionのCookieを渡していないようです。 api documentationはエラーを受け取った理由を説明しているようです。

[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; 

applicationDidBecomeActiveハンドラで、すべてのアプリケーション間で共有されているため、CookieAcceptPolicyにクッキーを拒否することができるよう:this answerによると、それはあなたがコードを発行する必要があるかもしれませんように見えます。

+0

私は上記のメソッドにこの行を追加しましたが、どのようにNSMutableURLRequestからクッキーを取得しますか? '(接続*)接続didReceiveData'メソッドのコードになるかもしれませんか? –

+0

自動的に保存するはずです。ドキュメントから:NSHTTPCookieクラスは、一般的なCookie属性の多くのアクセサを提供するCookieをカプセル化します。また、HTTP CookieヘッダーをNSHTTPCookieインスタンスに変換し、NSHTTPCookieインスタンスをNSURLRequestでの使用に適したヘッダーに変換するメソッドも提供します。 URLローディングシステムは、NSURLRequestに適した保存されたCookieを自動的に送信します。要求がクッキーを送信しないことを指定していない限り。同様に、NSURLResponseで返されるクッキーは、現在のクッキー受諾ポリシーに従って受け入れられます。 – Petesh

+0

これが問題を解決しました。クッキーがログインしたら、新しいリクエストでクッキーを設定することができました。 –

関連する問題