2016-05-11 2 views
1

Я ищу библиотеку, которая поможет мне пройти аутентификацию с помощью службы через oauth 1.0a с помощью односторонней аутентификации. У меня есть только consumerKey, consumerSecret и resource url.Golang one-legged/two-legged oauth 1.0a аутентификация

Примеры доступны в curl, PHP и Python. Я пытаюсь пройти аутентификацию с помощью GoLang.

curl 
-X GET 
-H "Content-Type: application/json" 
-H 'Authorization: OAuth realm="https://example.com",oauth_consumer_key="1234-5678-91011",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1424789327",oauth_nonce="abcde",oauth_version="1.0",oauth_signature="3iwWBq%2FHaBcDl9Q1o%2BjAc%2BKz8J%2FE%3D"' 
https://example.com 

PHP

require 'vendor/autoload.php'; 

use Guzzle\Http\Client; 
use Guzzle\Plugin\Oauth\OauthPlugin; 

$client = new Client('https://example.com'); 
$oauth = new OauthPlugin(array(
    'consumer_key' => '1234-5648-9101', 
    'consumer_secret' => 'abcde', 
)); 
$client->addSubscriber($oauth); 

$response = $client->get('/')->send(); 
echo $response->getBody(); 

Python

from requests_oauthlib import OAuth1Session 

key = '1234-5648-9101' 
secret = 'abcde' 
example = OAuth1Session(key, client_secret=secret) 
url = 'https://example.com' 
r = example.get(url) 
print r._content 

Я посмотрел на многих библиотек OAuth в Golang.

https://github.com/mrjones/oauth, требует: RequestTokenUrl, AccessTokenUrl, AuthorizeTokenUrl и callback url.

http://godoc.org/github.com/nhjk/oauth, требует: а tokenKey и tokenSecret, а также consumerKey и consumerSecret.

Есть ли библиотека, которую я могу использовать, которая позволит мне аутентифицироваться с помощью этой службы так же легко, как и примеры php и python выше? Если я могу использовать одну из вышеперечисленных библиотек, может ли кто-нибудь предоставить пример фрагмента кода? Все, что я пытаюсь, просто возвращает несанкционированные ответы.

+0

как вы обработанный 'curl', почему бы не составить запрос HTTP, а не с использованием библиотеки? –

ответ

0

У Golang есть разные aproach для фреймворков, по одной причине они вам не нужны. Вы можете легко настроить заголовок ответа стандартным пакетом http. Когда вы это понимаете, вы понимаете, что имеете дело с объектами первого класса, которые пытаются реализовать те другие языковые рамки.

Что-то вроде этой функции

func saveHandler(w http.ResponseWriter, r *http.Request) { 
    // allow cross domain AJAX requests 
    w.Header().Set("Access-Control-Allow-Origin", "*") 
} 
Смежные вопросы