2010-01-16 11 views
5

मैं एक ऐप लिख रहा हूं जो सदस्यता आधारित वेबसाइट पर आलेख प्रदर्शित करेगा।लॉगिन पेज प्रदर्शित किए बिना लॉग इन

हम चाहते हैं कि ऐप "सदस्यों को केवल" के रूप में सेट किए गए लेखों को पढ़ने और प्रदर्शित करने में सक्षम हो - भले ही ऐप स्वामी सदस्य न हो।

तो मैं ऐप उपयोगकर्ता को उपयोगकर्ता या पासवर्ड जानकारी दिखाने के बिना लॉगिन करने में सक्षम होना चाहता हूं।

जब मैं केवल सदस्यों को लेख तक पहुंचने का प्रयास करता हूं, तो मुझे रीडायरेक्ट मिलता है, लेकिन मुझे प्रमाणीकरण चुनौती नहीं मिलती है।

कोई विचार मैं अपने ऐप को स्वचालित रूप से लॉगिन करने के लिए कैसे प्राप्त कर सकता हूं?

यह फ़ॉर्म जैसा दिखता है। क्या मुझे अपने POST अनुरोध में सभी इनपुट मान शामिल करना है?

<FORM ACTION="https://www.mysite.com/cgi-bin/mysite/process" METHOD=POST> 
<input type="hidden" NAME="mv_todo" VALUE="return"> 
<input type="hidden" name="mv_session_id" value="DySUxWM5"> 
<INPUT TYPE="hidden" name="mv_success_variable_hash" VALUE=""> 
<INPUT TYPE="hidden" name="mv_success_variable_hash_colon" VALUE=""> 
<INPUT TYPE="hidden" NAME="mv_successpage" VALUE="index"> 
<input type="hidden" name="mv_failpage" value="login"> 

<input value="1942255628Hx0xE2S5iCw0caMyNmrf7j2ROvvM0QUJoEVLVz+2PRq4Jjs4azdjrjWSnwN7JkIr" name="form_fn" type="hidden"><input value="login" name="form_page" type="hidden"><input value="1" name="login_form_2_revisit" type="hidden"><table cellpadding="4" class="standard_form"> 
<tr><td colspan="2"><font color=red><b>New Visitors:</b></font> <a href="http://www.mysite.com/cgi-bin/mysite/account_create.html">Create a new account</a></td></tr> 
<tr><td class="standard_form_field"><b>Username:</b></td> 
<td colspan="1"><input maxlength="64" name="mv_username" onChange="if (this.value.match(/(^\s+)|(\s+$)/)){this.value = this.value.replace(/(^\s+)|(\s+$)/g,'');}if (this.value.match(/^$/) && !this.getAttribute('js_init_now')) {alert('This is a required field. Please make sure that it is not empty.'); this.focus();this.select();return false; }; " type="text" size="15"></td></tr> 

<tr><td class="standard_form_field">Password:</td> 
<td colspan="1"><input name="mv_password" type="password" size="15"></td></tr> 
<tr><td colspan="2"><input value="1" name="persistent_login" type="checkbox"> Remember my login info.</td></tr> 
<tr><td colspan="2"><input value="" name="login_complete_param" type="hidden"> <input value="Continue..." name="ig_click form-method:continue" type="submit" class="coolButton"></td></tr> 
</table> 
<p ></p> 

</form> 

उत्तर

3

http://allseeing-i.com/ASIHTTPRequest/ लाइब्रेरी का उपयोग मानक एनएसआरएल अनुरोधों का उपयोग करने के लिए बहुत आसान है। यदि आप एक कामकाजी उदाहरण देखना पसंद करते हैं तो इसके अलावा वास्तव में बहुत अच्छा नमूना कोड भी है। मैंने हाल ही में एक परियोजना पर इसका इस्तेमाल किया और यह वास्तव में अच्छी तरह से काम करता है मुझे एक साइट पर स्वचालित रूप से लॉगिन करना पड़ा और यह पूरी तरह से काम करता था। शुभ लाभ।

संपादित करें:

आपके द्वारा अभी पोस्ट किए गए फॉर्म को देख रहे हैं। इस कोड को आपकी सहायता करनी चाहिए यह है कि आप ASIHTTPREQUEST लाइब्रेरी का उपयोग करके फ़ॉर्म कैसे सबमिट करेंगे। यह आपको शुरू करना चाहिए ...: डी

NSURL *url = [NSURL URLWithString:@"https://www.mysite.com/cgi-bin/mysite/process"]; 
ASIFormDataRequest *requestPOST = [ASIFormDataRequest requestWithURL:url]; 
[requestPOST setPostValue:@"return" forKey:@"mv_todo"]; 
[requestPOST setPostValue:@"DySUxWM5" forKey:@"mv_session_id"]; 
[requestPOST setPostValue:@"" forKey:@"mv_success_variable_hash"]; 
[requestPOST setPostValue:@"" forKey:@"mv_success_variable_hash_colo"]; 
[requestPOST setPostValue:@"index" forKey:@"mv_successpage"];     
[requestPOST setPostValue:@"login" forKey:@"mv_failpage"];     
[requestPOST setPostValue:@"942255628Hx0xE2S5iCw0caMyNmrf7j2ROvvM0QUJoEVLVz+2PRq4Jjs4azdjrjWSnwN7JkIr" forKey:@"form_fn"]; 
[requestPOST setPostValue:@"login" forKey:@"form_page"]; 
[requestPOST setPostValue:@"1" forKey:@"login_form_2_revisit"]; 
[requestPOST setPostValue:@"PUT YOUR USERNAME VARIABLE IN HERE" forKey:@"mv_username"]; 
[requestPOST setPostValue:@"PUT YOUR PASSWORD VARIABLE IN HERE" forKey:@"mv_password"]; 
[requestPOST setPostValue:@"1" forKey:@"persistent_login"]; 
[requestPOST setPostValue:@"" forKey:@"login_complete_param"]; 
[requestPOST setPostValue:@"Continue..." forKey:@"ig_click form-method:continue"]; 
[requestPOST start]; 
+0

यह पूरी तरह से काम करता है। धन्यवाद। –

+0

कोई समस्या नहीं: डी !! –

0

कैसे आपकी साइट के सत्यापन पर सुनिश्चित नहीं हैं ... लेकिन जब से तुम पुनः निर्देशित किया जा उल्लेख मैं कुछ वेबफॉर्म अपने मान।

जब मैं कुछ इसी तरह करना था, मैं एक ही वस्तु है कि webrequests का ख्याल रखता है था, और यह प्रवेश पृष्ठ पर रीडायरेक्ट करने का ध्यान रखा है, तो के उपभोक्ता के लिए एक जवाब भेजने से पहले वास्तविक पृष्ठ पर जारी रखा उदेश्य।

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse { ... 

मैंने किया था: में

दिलचस्प बिट्स होगा (छद्म-ish कोड)

NSURL* redirected_url = [request URL] ; 
NSString* querystr = [redirected_url query] ; 
if ([self need_to_login:redirected_url]) { 
    NSString* body = [self generate_login_body_string] ; 
    request = [self makeRequestLocation:@"/sign_in" Method:@"POST" Body:body] ; 
} 
return request ; 

कहाँ शरीर के लिए स्ट्रिंग www फार्म इनकोडिंग पैरामीटर था कि वेब फार्म ब्राउज़र में उत्पन्न होता। साइट पर next_url param था जिसमें पृष्ठ सही था जब लॉगिन सही था।
बाद में कोड में मैं यह सुनिश्चित करने के लिए जांच करता हूं कि लॉगिन सफल था, लेकिन यह देखने के लिए जांच कर रहा था कि मुझे सही पृष्ठ पर रीडायरेक्ट किया गया था या खराब लॉगिन पृष्ठ पर रीडायरेक्ट किया गया था।

संबंधित मुद्दे