2016-01-20 23 views
7

Ho creato questo codice semplice in Perl per connettere Microsoft OneDrive API e elencare file e cartelle. Ma ora mi fermo per ottenere un token di accesso.Il client Microsoft OneDrive API in Perl non può ottenere il token di accesso

Ho letto il Microsoft's documentation per scoprirlo, ma non ho trovato nulla.

Ecco il codice:

#!/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"); 
} 

anch'io mando un messaggio GET all'URL e si deve reindirizzare all'URL ciò che contiene il token di accesso. Ma ho reindirizzato allo stesso URL quello che ho chiamato.

Come posso ottenere il token di accesso? O dov'è l'errore nel mio codice? O c'è qualche esempio di lavoro?

+0

Se hai appena incollato, sembra che si dispone di un errore di battitura: ' "client_id =" $. clien_tid, ' – bolav

+0

grazie, risolto – netdjw

+0

Per la funzione, se si sta facendo qualsiasi richiesta penso che sia saggio testarlo con REST su mozila prima di inserirlo nel proprio codice. – robel

risposta

1

Nella documentazione, si dice che l'URL con i params dovrebbe essere come:

GET https://login.live.com/oauth20_authorize.srf?client_id={client_id}&scope={scope}&response_type=token&redirect_uri={redirect_uri} 

tuo parametro $URL sembra sbagliato. $URL deve essere https://login.live.com/oauth20_authorize.srf e l'URL di reindirizzamento è https://login.live.com/oauth20_desktop.srf.

Non ho provato il codice dal momento che non voglio creare e account MS solo per questo;)