Импорт google контактов используя shuttlecloud
Я не могу получить контакты пользователя Google, используя shuttlecloud. Все вроде бы делал согласно документации shuttlecloud и Google. Получилось получить контакты пользователя mail.ru через shuttlecloud, но возникли проблемы с oauth2. И так, я создаю урл и копирую в браузер,
accounts.google.com/...donly&access_type=offline
. Получаю код, и копирую его в скрипт:
my $url = 'https://demo.api.shuttlecloud.com/beta/load'; my $auth_url = 'https://demo.api.shuttlecloud.com/beta/auth/capabilities'; my $appid = 'my_shuttlecloud_id'; my $ts = int(time); my $secret = 'my_shuttlecloud_secret'; my $sig = sha256_hex("{".$appid.":".$secret.":".$ts."}"); my $url_tok = 'https://www.googleapis.com/oauth2/v3/token'; my $code = '4/GmVQi8AgNzajSo0mTudUBumjHyHhhb9EBxN8ufG6z34.QjE7Q6MjmUweWmFiZwPfH01FreiwmwI'; my $id = 'my_google_id'; my $sec = 'my_google_secret'; my $redirect = 'http://localhost:80'; my $grant_type = 'authorization_code'; my $response = $ua->request(POST $url_tok, Content_Type => 'application/x-www-form-urlencoded', Content => [ code => $code, redirect_uri => $redirect, client_id => $id, client_secret => $sec, grant_type => $grant_type, ]); my $cod = $response->content; my $decoded_json = decode_json( $cod ); my $token = @{$decoded_json}{'access_token'}; my $email = '[email protected]'; my $data = '{ "contactsextraction": { "sourceaccount": { "userid": { "email": "'.$email.'" }, "auth": { "3loauth": "'.$token.'" } } } }'; $url = $url."?appid=".$appid."&ts=".$ts."&sig=".$sig; my $req = HTTP::Request->new(POST => $url); $req->content($data); my $resp = $ua->request($req); my $message; if ($resp->is_success) { $message = $resp->decoded_content; } else { print "error code: ", $resp->code, "\n"; print "error message: ", $resp->message, "\n"; } $decoded_json = decode_json( $message ); my $ft_url = @{$decoded_json}{'fetchurl'}; $ft_url = $ft_url."?appid=".$appid."&ts=".$ts."&sig=".$sig; sleep 5; $req = HTTP::Request->new(GET => $ft_url); $resp = $ua->request($req); if ($resp->is_success) { $message = $resp->decoded_content; } else { print "error code: ", $resp->code, "\n"; print "error message: ", $resp->message, "\n"; } $decoded_json = decode_json( $message ); print Dumper ($decoded_json);
От shuttlecloud получаю JSON:
’status’ => ’STARTED’
без контактов. Когда я создаю токен с помощью
OAuth 2.0 Playground
вставляю в скрипт — все работает, контакты получаю. Исходя из этого — я не правильно создать токен, но не могу понять, что я делаю неправильно. Буду очень благодарен за любую помощь.
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів