gpt4 book ai didi

java - 需要一些关于如何使用 Assembla API 的指导

转载 作者:行者123 更新时间:2023-11-30 03:30:47 27 4
gpt4 key购买 nike

在我将程序分发给那些人之前,我需要进行一些 Assembla 身份验证,才能登录并使用它。

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

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

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());
}

有什么帮助吗?

最佳答案

老实说,使用 OAuth2 库比使用自己的库更好。 OAuth2 需要许多奇怪的怪癖,这使得从头开始使用它(或仅使用 curl )变得困难。我使用 Node.js 编写了一个应用程序,该应用程序使用 assembla API 和一个名为 simple-oauth 的 Node OAuth 库。可能有几个 Java 库可以帮助您起步(例如 google 的 https://github.com/google/google-oauth-java-client )。 Assembla 并不完全清楚将什么内容发送到哪里,因此这里有一些来 self 的 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,但我的时间很紧;)

关于java - 需要一些关于如何使用 Assembla API 的指导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29109283/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com