gpt4 book ai didi

android - Google http/oauth2 api 总是为第二个 HTTPRequest 抛出 EOFException

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:52 25 4
gpt4 key购买 nike

我是安卓新手。我尝试使用 OAuth2 实现一个简单的客户端/服务器连接,过程是,

  1. 尝试使用 ClientCredentials(client_id 和 client_secret)连接到 OAuth2 服务器并获取访问 token 。

  2. 使用访问 token 注册用户。

所以涉及到两轮连接。第一轮一直没问题,第二轮http连接老是返回EOFException,搞得我挺迷糊的。相关代码如下(包含在一个新线程中运行的过程中)。

NetHttpTransport transport = new NetHttpTransport();
JacksonFactory factory = new JacksonFactory();
//use http for testing only, will use https for deployed environment
GenericUrl url = new GenericUrl("http://192.168.x.x/oauth2/token");
//client_id & client_secret
BasicAuthentication auth = new BasicAuthentication("abc","abc");
ClientCredentialsTokenRequest token =
new ClientCredentialsTokenRequest(transport, factory, url)
.setClientAuthentication(auth);
TokenResponse response = token.execute();

//ok, i can get access token in response without problem

Credential credential =
new Credential(BearerToken.authorizationHeaderAccessMethod())
.setFromTokenResponse(response);
//note that I reuse the transport, but using a new transport2 doesn't help
HttpRequestFactory rf = trasport.createRequestFactory(credential);
GenericData data = new GenericData();
data.put("Username",phoneText.getText().toString());
data.put("Password", passwordText.getText().toString());
JsonHttpContent content = new JsonHttpContent(factory, data);
GenericUrl genericUrl=new GenericUrl("http://192.168.x.x/users");
HttpRequest request = rf.buildPostRequest(genericUrl, content);

//the following will always return EOF exception
HttpResponse response=request.execute();

我可以知道它为什么会发生以及如何解决吗?

我是否正确使用了 google http/oauth2 api?

非常感谢。

最好的问候,

最佳答案

如果您使用的是 Android,请尽可能使用 GoogleAuthUtil来自 Google Play 服务的类,而不是尝试从您的 Android 应用程序内部执行 OAuth 舞蹈。手机上的任何帐户都经过预先验证,并且很容易获得任何合理的访问 token 。

关于android - Google http/oauth2 api 总是为第二个 HTTPRequest 抛出 EOFException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19854498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com