我正在使用Retrofit构建一个Android Github应用程序,但我从https://api.github.com/authorizations
检索令牌时遇到了麻烦我知道如何使用curl使用curl执行请求:
curl -X POST -H "Accept: Application/json" -u "username:password" -d '{"scopes": ["user","repo","gist","notifications","repo","repo:status"],"note":"GithubViewer Android App","client_id":"xxx","client_secret":"yyyy"}' "https://api.github.com/authorizations"
我在了解如何设置Scopes数组和-u认证字段时遇到了麻烦。我在命令行中尝试使用“身份验证:基本用户名:密码”,但这也不起作用:(
以下是我想要做的一个示例:
RequestInterceptor interceptor = new RequestInterceptor() {
@Override
public void intercept(RequestFacade request) {
request.addHeader("Authentication", "Basic " + username + ":" + password);
}
};
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(GithubClient.API_URL)
.setRequestInterceptor(interceptor)
.build();
有什么建议吗?
谢谢!
答案 0 :(得分:1)
我还没有使用过Retrofit,但我发现了一些可能导致问题的东西。您在Authentication头中提供用户名:password作为纯文本,但应使用Base64编码对其进行编码。
String str = "username:password";
String base64EncodedUsernamePassword;
try {
base64EncodedUsernamePassword = Base64.encode(str.getBytes("UTF-8"), Base64.NO_WRAP);
} catch (UnsupportedEncodingException e) {
// Weird, no UTF-8 encoding found?
}