改造-u用户名:密码字段和范围数组

时间:2014-11-22 22:40:50

标签: android curl oauth github-api retrofit

我正在使用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();

有什么建议吗?

谢谢!

1 个答案:

答案 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?
}