I created this simple code in Perl
to connect Microsoft OneDrive API
and list files and folders. But now I'm stopped on getting access token.
I read the Microsoft's documentation to find out, but I nothing found.
Here is the 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");
}
So I send a GET
message to the URL and it should be redirect to the URL what contain the access token. But I redirected to the same URL what I called.
How can I get the access token? Or where is the mistake in my code? Or is there any working example?
In the documentation, it says that the URL with the params should be like:
GET https://login.live.com/oauth20_authorize.srf?client_id={client_id}&scope={scope}&response_type=token&redirect_uri={redirect_uri}
Your $URL
parameter seems wrong. $URL
should be https://login.live.com/oauth20_authorize.srf
and redirect URL is https://login.live.com/oauth20_desktop.srf
.
I didn't try the code since I don't want to create and MS account just for this ;)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With