2016-01-20 2 views
7

Я создал этот простой код в Perl для подключения Microsoft OneDrive API и списка файлов и папок. Но теперь я остановился на получении токена доступа.Клиент Microsoft OneDrive API в Perl не может получить токен доступа

Я прочитал Microsoft's documentation, чтобы узнать, но я ничего не нашел.

Вот код:

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

Так что я отправить GET сообщение URL, и он должен быть редирект на URL, что содержит маркер доступа. Но я перенаправил на тот же URL то, что я назвал.

Как я могу получить токен доступа? Или где ошибка в моем коде? Или есть рабочий пример?

+0

Если вы только что вставили, это выглядит, как у вас есть опечатка: '«client_id =»$. clien_tid, ' – bolav

+0

спасибо, исправлено – netdjw

+0

Для этой функции, если ур делает любой запрос, я думаю, что его разумно протестировать его с помощью REST на mozila, прежде чем поместить его в код ur. – robel

ответ

1

В документации говорится, что URL с Params должен быть как:

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

Ваш параметр $URL кажется неправильным. $URL должно быть https://login.live.com/oauth20_authorize.srf и адресом переадресации является https://login.live.com/oauth20_desktop.srf.

Я не пробовал код, так как я не хочу, чтобы открыть счет MS только для этого;)

Смежные вопросы