首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要一些关于如何使用Assembla API的提示

需要一些关于如何使用Assembla API的提示
EN

Stack Overflow用户
提问于 2015-03-17 20:42:42
回答 2查看 656关注 0票数 1

我需要做一些Assembla认证之前,我分发我的程序,可以使用登录和使用它。

但是,我在如何使用Assembla方面遇到了一些问题,因为我以前从未在Java中真正使用过REST。

我需要获取用户所属的所有空间,然后确定用户是否是我设置的任何空间的一部分,以便允许它们进入应用程序。在网站上,我似乎会用这个:

index.html

但我该怎么用这个呢?我知道我需要发出HTTP请求,但是我不知道如何在Java中形成请求属性。

到目前为止我已经知道了:

代码语言:javascript
复制
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());
}

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-25 19:46:23

老实说,与其滚动自己的库,不如使用OAuth2库。OAuth2需要很多奇怪的怪癖,这使得从头开始使用它(或者仅仅是卷曲)变得困难。我用Node.js编写了一个应用程序,它使用assembla和一个名为simple-oauth的Node OAuth库。可能有几个Java库可以帮助你离开地面(例如。谷歌的https://github.com/google/google-oauth-java-client)。Assembla还不完全清楚在哪里发送什么,因此下面是我的JS代码中的一些示例,可以让您大致了解该做什么:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2015-03-23 16:44:04

请注意,它使用OAuth2,因此请求应该有一个授权:承载{令牌}。您使用的是Basic,这是另一种类型的授权。

在您给出的链接中,请求是用curl发出的,带有“授权:无记名令牌”。

curl -i -H“授权:无记名_token”https://api.assembla.com/v1/spaces.xml

希望能解决你的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29109283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档