我已经在我的应用程序中添加了验证电话号码的代码,一旦用户验证了他的电话号码,我就将该号码添加到我的数据库中。
现在,如果用户再次登录,我要求用户再次验证他的电话号码,但twitter fabric允许他/她验证任何号码,但我希望twitter fabric Digits验证我从数据库中提供给twitter fabric数字的电话号码。
发布于 2017-03-13 22:42:57
面料小组的托德。
这里最重要的考虑因素是您从您的服务器获取数字详细信息,然后直接发送给我们。这样,您的服务器就可以接收受信任的用户信息。
首先,查询数字以请求userID、电话号码和OAuth令牌。您应该使用OAuth Echo来实现这一点。
用于生成OAuth回声标头的。
DigitsOAuthSigning类提供了一种为用户会话生成授权头的便捷方法。DigitsOAuthSigning依赖于TwitterAuthConfig和TwitterAuthToken。
TwitterAuthConfig类封装凭据以标识您的Twitter或Digits应用程序。您可以从Digits类中获取此对象。
TwitterAuthToken类表示Twitter用户的用户凭证。您可以从TwitterSession或DigitsSession获取此对象。
TwitterAuthConfig authConfig = TwitterCore.getInstance().getAuthConfig();
TwitterAuthToken authToken = session.getAuthToken();
DigitsOAuthSigning oauthSigning = new DigitsOAuthSigning(authConfig, authToken);使用OAuth回显的最简单方法是在客户端中生成authorization标头。使用这些标头从应用程序外部(例如,从您的web服务器服务器)发出OAuth回显请求。
Map<String, String> authHeaders = oauthSigning.getOAuthEchoHeadersForVerifyCredentials();authHeaders映射包含X-Auth-Service-Provider和X-Verify-Credentials-Authorization密钥。您的web服务器应采用X-Verify-Credentials-Authorization中的值,并使用它将请求的Authorization标头设置为X-Auth-Service-Provider中的URL。一旦您有了标题,您就可以将它们发送到您的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();为了获得更高的安全性,在您的web主机上,您应该:
验证X-Verify-Credentials-Authorization中的oauth标头值是否与您的oauth_consumer_key使用者密钥匹配,以确保用户正在登录您的站点。您可以使用oauth库来解析标头并显式匹配键值,例如parse(params['X-Verify-Credentials-Authorization']).oauth_consumer_key=<your oauth consumer key>.
通过解析uri并断言域为api.digits.com来验证X-Auth-Service-Provider报头,以确保您正在呼叫数字。
验证来自verify_credentials调用的响应,以确保用户成功登录
考虑向签名添加额外的参数,以便将应用程序自己的会话绑定到Digits会话。使用备用表单getOAuthEchoHeadersForVerifyCredentials(Map<String, String> optParams)提供要包括在OAuth服务getOAuthEchoHeadersForVerifyCredentials(Map<String, String> optParams)中的其他参数。验证这些参数是否存在于服务URL中,以及API请求是否成功。
https://stackoverflow.com/questions/42750036
复制相似问题