Utworzono ten prosty kod w Perl
, aby połączyć się z Microsoft OneDrive API
oraz wyświetlić listę plików i folderów. Ale teraz jestem zatrzymany na zdobywaniu tokena dostępu.Klient Microsoft OneDrive API w Perlu nie może uzyskać tokena
Przeczytałem Microsoft's documentation, aby się dowiedzieć, ale nic nie znalazłem.
Oto kod:
#!/usr/bin/perl -w
use strict;
use LWP; use LWP::UserAgent;
my $client_id = '...';
my $client_secret = '...';
my $client_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.104 Safari/537.36'; # whatever
my $ua = new LWP::UserAgent;
$ua->->show_progress(1); # Microsoft use url redirection and I want to see the steps
$ua->agent($client_agent);
$ua->timeout(30);
my $URL = 'https://login.live.com/oauth20_desktop.srf'; # from documentation
my @params = (
"client_id=".$client_id,
"scope=onedrive.readonly",
"response_type=token",
"redirect_uri=https://login.live.com/oauth20_desktop.srf"
);
my $URLFULL = $URL."?".join("&", @params);
my $res = $ua->get($URLFULL);
if ($res->is_success) {
print $res->request->uri->as_string."\n"; # it should be the url with a valid token
my $block = $res->as_string;
print $block; # this is the full response
} else {
die ($res->as_string."error in loading page");
}
więc wysłać wiadomość GET
do adresu URL i należy przekierować do adresu URL, co zawierają token dostępu. Ale przekierowałem do tego samego adresu URL, co nazwałem.
Jak mogę uzyskać token dostępu? Lub gdzie jest błąd w moim kodzie? Czy istnieje jakiś przykład działania?
Jeśli tylko wklejane, wygląda na to, że masz literówkę: '„client_id =”$. clien_tid, ' – bolav
dziękuję, poprawiono – netdjw
Dla funkcji, jeśli ur robi jakąkolwiek prośbę, myślę, że mądrze jest przetestować ją z REST na mozila przed umieszczeniem go w kodzie ur. – robel