2016-01-20 27 views
7

Tôi đã tạo mã đơn giản này trong Perl để kết nối Microsoft OneDrive API và liệt kê các tệp và thư mục. Nhưng bây giờ tôi đã ngừng nhận mã thông báo truy cập.Ứng dụng khách Microsoft API OneDrive trong Perl không thể nhận mã thông báo truy cập

Tôi đọc số Microsoft's documentation để tìm hiểu, nhưng tôi không tìm thấy gì.

Đây là mã:

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

Vì vậy, tôi gửi một tin nhắn GET đến URL và nó sẽ được chuyển hướng đến URL gì chứa các thẻ truy cập. Nhưng tôi đã chuyển hướng đến cùng một URL mà tôi đã gọi.

Tôi làm cách nào để nhận mã thông báo truy cập? Hoặc đâu là sai lầm trong mã của tôi? Hoặc là có bất kỳ ví dụ làm việc?

+0

Nếu bạn vừa dán, có vẻ như bạn có lỗi đánh máy: '" client_id = ". $ clien_tid, ' – bolav

+0

cảm ơn bạn, đã sửa – netdjw

+0

Đối với tính năng này, nếu ur thực hiện bất kỳ yêu cầu nào, tôi nghĩ rằng nó nên khôn ngoan để thử nghiệm nó với REST trên mozila trước khi đặt nó vào mã ur. – robel

Trả lời

1

Trong tài liệu hướng dẫn, nó nói rằng URL với params nên như:

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

tham số $URL của bạn có vẻ sai. $URL phải là https://login.live.com/oauth20_authorize.srf và URL chuyển hướng là https://login.live.com/oauth20_desktop.srf.

Tôi không thử mã vì tôi không muốn tạo và tài khoản MS chỉ vì điều này;)

Các vấn đề liên quan