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?
Nếu bạn vừa dán, có vẻ như bạn có lỗi đánh máy: '" client_id = ". $ clien_tid, ' – bolav
cảm ơn bạn, đã sửa – netdjw
Đố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