提问人:Karen Vardanyan 提问时间:11/7/2023 更新时间:11/7/2023 访问量:31
如何将 POST 请求设置为 GitHub REST API?
How to set POST Request to GitHub REST API?
问:
我需要用GitHub REST api编写android应用程序! 所以在第一个用户需要在应用中授权时, 首先,我需要设置POST请求,并获取有关h用户的一些信息! 请帮帮我...
这是 GitHub Rest api 的文档...https://docs.github.com/en/rest?apiVersion=2022-11-28
这也是我的任务!
身份验证 ( 登录 ) 在此页面中,UI 部分必须包含 2 个输入字段(电子邮件/用户名和密码)和一个按钮(登录)。此屏幕上没有工具栏。身份验证必须使用 GitHub REST API 完成:
对于密码,请使用个人访问令牌,该令牌可以从 github 帐户中的设置生成 这是 github rest api https://developer.github.com/v3/ (https://docs.github.com/en/rest/overview/other-authentication-methods#via-oauth-and-personal-access-tokens 的文档)
如果用户输入了错误的凭据(密码或用户名/电子邮件),则需要显示一个 snackbar,指示凭据错误。如果用户登录成功,则需要存储登录状态,以便重新进入应用后,用户可以直接跳转到主流,跳过认证流。
提示:身份验证必须使用基本的身份验证方法实现(详见 github api 文档)。此外,您还需要使用拦截器进行 Retrofit 的基本身份验证。
我试图在文档中找到该信息,但不幸的是我不能 我还问了ChatGPT。
这里代码.
data class LoginRequest(val username: String, val password: String)
'interface GitHubService {
@POST("authorizations")
@Headers("Accept: application/json")
fun login(@Header("Authorization") authHeader: String,@Body loginRequest: LoginRequest):Call<YourResponseModel>
}`
private fun doRequest() {
val retrofit = Retrofit.Builder()
.baseUrl("https://api.github.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val githubService = retrofit.create(GitHubService::class.java)
val emailOrUsername = binding?.editTextText?.text.toString()
val password = binding?.editTextTextPassword?.text.toString()
val authHeader = "Basic " + Base64.encodeToString(
"$emailOrUsername:$password".toByteArray(), Base64.NO_WRAP
)
val loginRequest = LoginRequest(emailOrUsername, password)
githubService.login(authHeader, loginRequest).enqueue(object : Callback<YourResponseModel> {
override fun onResponse(call: Call<YourResponseModel>, response: Response<YourResponseModel>) {
if (response.isSuccessful) {
// Authentication successful
// Store the logged-in state here
} else {
// Authentication failed, show a Snackbar
Snackbar.make(rootView, "Invalid credentials", Snackbar.LENGTH_SHORT).show()
}
}
override fun onFailure(call: Call<YourResponseModel>, t: Throwable) {
// Handle network or other errors
}
})
}
在这种情况下,我无法获取请求模型,也无法通过Postman获得正确的响应
答: 暂无答案
评论