假设我想使用代码(Kotlin / Java)在Github上搜索一些电子邮件地址。
我成功完成了此操作,没有任何登录令牌,但据我所知,它仅限于每分钟10个查询,并且如果我有来自用户的令牌(from login to Github),它将添加30个查询每分钟。
要在不登录的情况下从Github获取信息,我使用OKHTTP进行访问(从here找到):
https://api.github.com/search/users?q=$email+in:EMAIL_ADDRESS_HERE
如果我可以使用令牌,则可能是:
https://api.github.com/search/users?q=$email+in:EMAIL_ADDRESS_HERE&access_token=$TOKEN_HERE
但是我不知道如何从用户那里获取此令牌。我可以找到如何使用网站本身为自己做一个。
我向Github询问了它是如何完成的,但是他们向我展示了一些curl code,可惜我不熟悉它,我也不知道它是如何完成的以及如何将其转换为Kotlin / Java。我尝试阅读alternatives,但随后发现了一些有关其完成方式的信息(缺少参数所需的先前数据)。通过使用WebView或直接联系Github服务器,我什至都无法理解。如果它直接与Github服务器联系,这是否意味着我需要为该用户提供userName&password EditTexts?
这是我在教程中看到的代码:
JsonFactory jsonFactory = new JacksonFactory();
HttpTransport httpTransport = new NetHttpTransport();
AuthorizationCodeFlow flow = new AuthorizationCodeFlow.Builder(
BearerToken.authorizationHeaderAccessMethod(),
httpTransport, jsonFactory,
new GenericUrl("https://github.com/login/oauth/access_token"),
new ClientParametersAuthentication( /* Client ID and Secret */ ),
/* Client ID */
"https://github.com/login/oauth/authorize").build();
TokenResponse tokenResponse = flow
.newTokenRequest(code)
.setScopes(Collections.singletonList("user:email"))
.setRequestInitializer(new HttpRequestInitializer() {
@Override
public void initialize(HttpRequest request) throws IOException {
request.getHeaders().setAccept("application/json");
}
}).execute();
因此,这里缺少的是“客户端ID和密钥”,“代码”以及用户本人提供的部分:用于获取令牌的用户名和密码。
我如何进入整个登录过程,最后获得要使用的令牌?
应该使用WebView为用户提供所有登录选项,还是应该使用自己的UI放置userName&password?