2015-03-17 10 views
1

Мне нужно сделать некоторую аутентификацию Assembla до того, как я распространю свою программу, могу использовать логин и использовать его.Нужно несколько указателей на использование API Assembla

Но у меня возникают некоторые проблемы с тем, как я использую API Assembla, поскольку я никогда раньше не использовал REST HTML API в Java.

Мне нужно получить все пробелы, в которых находится пользователь, а затем выяснить, является ли пользователь частью любого из пространств, которые я настроил, чтобы я мог разрешить их в приложении. На веб-сайте, кажется, я хотел бы использовать это:

http://api-doc.assembla.com/content/ref/spaces_index.html

Но как я могу использовать это точно? Я получаю, что мне нужно сделать HTTP-запрос GET, но я не знаю, как сформировать свойства запроса в Java.

Я получил это до сих пор:

String authentication = "username:password"; 
String encoding = Base64.getEncoder().encodeToString(authentication.getBytes()); 

URL url = new URL("https://www.assembla.com/"); 

HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 

conn.setRequestMethod("GET"); 
conn.setRequestProperty("Authorization", "Basic " + encoding); 

conn.connect(); 
for (Entry<String, List<String>> header : conn.getHeaderFields().entrySet()) { 
    System.out.println(header.getKey() + "=" + header.getValue()); 
} 

Любая помощь?

+0

Никто ничего не знает об этом? – OmniOwl

ответ

1

Честно говоря, вам лучше использовать библиотеку OAuth2, чем кататься самостоятельно. Существует множество странных причуд, которые нужны OAuth2, которые затрудняют использование этого с нуля (или только с завихрением). Я написал приложение, использующее Node.js, который использует API сборки и библиотеку Node OAuth, называемую simple-oauth. Вероятно, есть несколько Java-библиотек, которые помогут вам сбиться с пола (например, https://github.com/google/google-oauth-java-client). Assembla не совсем понятно, на что отправить, где, так вот некоторые образцы из моей JS кода, чтобы дать вам идею с грубо что делать:

oauth2 = require('simple-oauth2')({ 
    clientID: config.creds.clientID, 
    clientSecret: config.creds.clientSecret, 
    site: 'https://api.assembla.com', 
    authorizationPath: '/authorization', 
    tokenPath: '/token' 
}); 

//user hits this route, but doesn't have a auth code, so we redirect 
app.get('/', function (req, res) { 
    res.redirect('/auth'); 
}); 

var authorization_uri = oauth2.authCode.authorizeURL({ 
    client_id: config.creds.clientID, 
    response_type: 'code' 
}); 

app.get('/auth', function (req, res) { 
    res.redirect(authorization_uri); 
}); 

//callback url route specifed when you made your app 
app.get('/callback', function (req, res) { 
    var code = req.query.code; 

    //we've got an auth code, 
    //so now we can get a bearer token 
    oauth2.authCode.getToken({ 
     code: code, 
     grant_type: 'authorization_code' 
    }, saveToken); 

    function saveToken(error, result) { 
     if (error) { 
      console.log('Access Token Error', error); 
      res.redirect('/'); 
      return; 
     } 
     var token = oauth2.accessToken.create(result); 
     pullSpaces(res, token); 
    } 
}); 

function pullSpaces (res, token) { 
    request({ 
     method: 'GET', 
     uri: 'https://api.assembla.com/v1/spaces', 
     auth: { 
      bearer: token.token.access_token 
     } 
    }, function (error, response, body) { 
     //this contains a json object of all the user's spaces 
    }); 

} 

Мои извинения за отправку Javascript образцов вместо Java, но я на короткое время;)

1

Обратите внимание, что он использует OAuth2, и в этом случае запрос должен иметь авторизацию: Bearer {token}. Вы используете Basic, который является другим типом авторизации.

В ссылке, которую вы дали запрос, сделанный с завитком с "Authorization: Bearer фишка"

локона -i -H "Авторизация: однонаправленное _token" https://api.assembla.com/v1/spaces.xml

Надежда, которая исправляет ваши вопросы.