在Android上使用资源所有者密码凭据实施OAuth2

Mar*_* H. 7 authentication spring android oauth

我需要调用受OAuth2资源所有者密码凭据保护的服务.我在oauth.net/code上尝试了所有库,但没有成功.所有这些似乎都没有提供这种身份验证,但似乎很好用3腿认证.

我的用户应该使用用户名和密码登录,但我不想存储用户名和密码.我想获取访问令牌并不时刷新此令牌.

我的网络通信目前基于spring 4 android和你可以在那里找到的resttemplate.

有什么建议,我可以用哪个库?我认为这是一个常见问题.

Dan*_*icz 2

我也找不到任何东西,所以我自己建立了一个库,并将其发布给公众。

用法:

import org.sdf.danielsz.OAuth2Client;
import org.sdf.danielsz.Token;

OAuth2Client client = new OAuth2Client(username, password, app-id, app-secret, site);
Token token = client.getAccessToken();

token.getResource(client, token, "/path/to/resource?name=value");
Run Code Online (Sandbox Code Playgroud)

使用此授权类型,客户端应用程序不需要存储用户的用户名/密码。这些凭据被询问一次并交换访问令牌。然后可以使用该令牌访问受保护的资源。

要检查令牌是否已过期:

token.isExpired();
Run Code Online (Sandbox Code Playgroud)

手动刷新令牌:

Token newToken = token.refresh(client);
Run Code Online (Sandbox Code Playgroud)

更复杂的示例可以在 github 上的README中找到。