0

我已经在我的应用程序中添加了验证电话号码的代码,一旦用户验证了他的电话号码,我就会将该号码添加到我的数据库中。

现在,如果用户再次登录,我要求用户再次验证他的电话号码,但 twitter fabric 允许他/她验证任何号码,但我希望 twitter fabric Digits 验证我从我的数据库中提供给 twitter fabrics Digits 的电话号码。

4

1 回答 1

1

来自 Fabric 团队的 Todd。

这里最重要的考虑是您从您的服务器获取数字详细信息,然后直接发送给我们。这样,您的服务器就会收到受信任的用户信息。

首先,查询 Digits 以请求用户 ID、电话号码和 OAuth 令牌。您应该使用 OAuth Echo 来实现这一点。

生成 OAuth Echo 标头。

该类DigitsOAuthSigning提供了一种为用户会话生成授权标头的便捷方法。DigitsOAuthSigning依赖于TwitterAuthConfig以及TwitterAuthToken

该类TwitterAuthConfig封装凭据以识别您的 Twitter 或 Digits 应用程序。您可以从 Digits 类中获取此对象。

该类TwitterAuthToken表示 Twitter of Digits 用户的用户凭据。您可以从 aTwitterSession或获取此对象DigitsSession

TwitterAuthConfig authConfig = TwitterCore.getInstance().getAuthConfig();
TwitterAuthToken authToken = session.getAuthToken();
DigitsOAuthSigning oauthSigning = new DigitsOAuthSigning(authConfig, authToken);

使用 OAuth Echo 的最简单方法是在客户端中生成授权标头。使用这些标头从应用程序外部(例如,从您的 Web 服务器服务器)发出 OAuth Echo 请求。

Map<String, String> authHeaders = oauthSigning.getOAuthEchoHeadersForVerifyCredentials();

authHeaders映射包含X-Auth-Service-ProviderX-Verify-Credentials-Authorization键。您的 Web 服务器应该获取 in 的值X-Verify-Credentials-Authorization,并使用它来设置对Authorizationin 中 URL 的请求的标头X-Auth-Service-Provider。获得标头后,您可以将它们发送到您的 Web 服务器以验证凭据。

URL url = new URL("http://api.yourbackend.com/verify_credentials.json");
HttpsURLConnection connection = (HttpsURLConnection)url.openConnection();
connection.setRequestMethod("GET");

// Add OAuth Echo headers to request
for (Map.Entry<String, String> entry : authHeaders.entrySet()) {
  connection.setRequestProperty(entry.getKey(), entry.getValue());
}

// Perform request
connection.openConnection();

为了提高安全性,在您的虚拟主机上,您应该:

验证oauth_consumer_key标题中的值是否X-Verify-Credentials-Authorization与您的 oauth 使用者密钥匹配,以确保用户正在登录您的站点。您可以使用 oauth 库来解析标头并显式匹配键值,例如parse(params['X-Verify-Credentials-Authorization']).oauth_consumer_key=<your oauth consumer key>.

通过解析 uri 并声明域是 api.digits.com 来验证X-Auth-Service-Provider标头,以确保您正在调用 Digits。

验证来自 verify_credentials 调用的响应以确保用户成功登录

考虑向签名添加其他参数,以将您的应用程序自己的会话与 Digits 会话联系起来。使用备用表单getOAuthEchoHeadersForVerifyCredentials(Map<String, String> optParams)提供附加参数以包含在 OAuth 服务 URL 中。验证这些参数是否存在于服务 URL 中以及 API 请求是否成功。

Android中验证数字用户的参考

于 2017-03-13T14:42:57.140 回答