我已经在我的应用程序中添加了验证电话号码的代码,一旦用户验证了他的电话号码,我就会将该号码添加到我的数据库中。
现在,如果用户再次登录,我要求用户再次验证他的电话号码,但 twitter fabric 允许他/她验证任何号码,但我希望 twitter fabric Digits 验证我从我的数据库中提供给 twitter fabrics Digits 的电话号码。
我已经在我的应用程序中添加了验证电话号码的代码,一旦用户验证了他的电话号码,我就会将该号码添加到我的数据库中。
现在,如果用户再次登录,我要求用户再次验证他的电话号码,但 twitter fabric 允许他/她验证任何号码,但我希望 twitter fabric Digits 验证我从我的数据库中提供给 twitter fabrics Digits 的电话号码。
来自 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-Provider
和X-Verify-Credentials-Authorization
键。您的 Web 服务器应该获取 in 的值X-Verify-Credentials-Authorization
,并使用它来设置对Authorization
in 中 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 请求是否成功。