2011-04-12 3 views
0

Я нашел один скрипт для доступа к информации о приложении с этого форума. В основном, я обращаюсь к приложениям facebook и могу установить его автоматически.Mechanize and Facebook App

Я попытался проверить, не получил ли диалоговое окно с правами доступа по следующему коду, но он не возвращает страницу разрешения, а не первую страницу.

Что такое facebook do, это несколько переадресаций или мета или отправляет несколько других запросов, а затем приземляет пользователя на страницу разрешения, где мне нужно нажать кнопку «Разрешить». Но я не могу получить эту страницу окончательного разрешения для многих приложений. Вот код,

use strict; 
use WWW::Mechanize; 
use HTTP::Cookies; 

my $url = "http://www.facebook.com"; 

my $appurl = "http://apps.facebook.com/funmoods/"; 

my $username = 'mail'; 
my $password = 'pass'; 

my $mech = WWW::Mechanize->new(); 
$mech->cookie_jar(HTTP::Cookies->new()); 
$mech->get($url); 
$mech->form_name('menubar_login'); 
$mech->field(email => $username); 
$mech->field(pass => $password); 
$mech->click(); 
my $facebook_content = $mech->content(); 
# go to an app url 
$mech->get($appurl); 
my $app_content = $mech->content(); 
print "$app_content\n"; 

Я не знаю, почему механизация не имеет доступа к странице с окончательной загрузкой. для загрузки страницы разрешений потребовалось некоторое время, но механизация всегда возвращает первую исходную страницу. Как я могу сказать механике подождать, пока он загрузит все страницы?

Нужна помощь Thanks

ответ

0

Я думаю, вы должны использовать progress суб унаследованный от LWP :: UserAgent

$ua->progress($status, $request_or_response) 

из документации:

Это называется часто, как ответ принимается независимо от того, как обрабатывается контент. Метод вызывается с $ status "begin" при запуске обработки запроса и с $ state "end" перед возвратом запроса . В промежутке между этими $ статус будет представлять собой долю полученного ответа или строку «отметьте», если сумма не может быть равна .

Когда $ status является «begin», второй аргумент является объектом запроса, , иначе это объект ответа.