2016-01-20 9 views
7

Ich habe diesen einfachen Code in Perl erstellt, um Microsoft OneDrive API zu verbinden und Dateien und Ordner aufzulisten. Aber jetzt bin ich gestoppt, um Zugangstoken zu bekommen.Microsoft OneDrive API-Client in Perl kann kein Token erhalten

Ich lese die Microsoft's documentation um herauszufinden, aber ich habe nichts gefunden. Hier

ist der Code:

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

Also habe ich eine GET Nachricht an die URL senden und es sollte an die URL umleiten, was die Zugriffstoken enthalten. Aber ich habe auf dieselbe URL umgeleitet, was ich angerufen habe.

Wie bekomme ich das Access Token? Oder wo ist der Fehler in meinem Code? Oder gibt es ein Arbeitsbeispiel?

+0

Wenn Sie gerade eingefügt, es sieht aus wie Sie einen Tippfehler haben: '„client_id =“$. clien_tid, ' – bolav

+0

danke, behoben – netdjw

+0

Für die Funktion, wenn Sie irgendeine Anfrage tun, ich denke, es ist klug, es mit REST auf mozila zu testen, bevor Sie es in ur-Code. – robel

Antwort

1

In der Dokumentation, heißt es, dass die URL mit dem params sein sollte wie:

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

Ihre $URL Parameter falsch scheinen. $URL sollte https://login.live.com/oauth20_authorize.srf sein und die Weiterleitungs-URL lautet https://login.live.com/oauth20_desktop.srf.

Ich habe den Code nicht versuchen, da will ich nicht schaffen und MS-Konto nur für diesen;)

Verwandte Themen