android - 如何通过登录从 Github 用户获取令牌?
问题描述
背景
假设我想使用代码(Kotlin/Java)在 Github 上搜索一些电子邮件地址。
问题
我在没有任何登录令牌的情况下成功地做到了,但据我所知,它仅限于每分钟 10 个查询,如果我有来自用户的令牌(从登录到 Github),它每分钟增加 30 个查询。
要在不登录的情况下从 Github 获取信息,我使用 OKHTTP 来访问它(从这里找到):
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 代码,遗憾的是我不熟悉它,我不知道它是如何在那里完成的以及如何将其转换为 Kotlin/Java。我试图阅读替代品,但后来我发现了一些关于它是如何完成的缺失信息(缺失了参数所需的先前数据)。我什至不知道它是通过使用 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();
所以,这里缺少的是“Client ID and Secret”、“code”,以及用户自己提供的部分:获取令牌的用户名和密码。
问题
如何进入整个登录过程,并最终获得要使用的令牌?
它应该使用 WebView 为用户提供所有登录选项,还是应该使用我自己的 UI 来放置用户名和密码?
解决方案
推荐阅读
- openlayers - Openlayers 弹出窗口在缩小时不遵循所选功能
- c# - WPF 应用程序不能使用自己的注册表项
- python - Pip install PyAudio 在 Windows 上失败
- c++ - C++ 的高级打印函数
- python - 从像素坐标数据将图像的多个区域保存为 .JPG 文件
- oracle - 使用plsql开发人员执行时可以写入xls文件并打开文件吗?
- android - 无法在安卓设备上安装更新版本
- javascript - 使用 scrollableWidth 和 scrollToHorizontalOffset 移动以使选定对象居中
- grid - wxpython网格:在编辑时将鼠标悬停在其他单元格上会重置编辑
- c# - 我可以在安装了 .net 4.7 的机器上运行 .net 4.7.2 目标应用程序吗?