首页 文章

Android和Twitter Fabric:在Twitter-fabric Digits API中发送用于验证的特定电话号码

提问于
浏览
0

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

现在,如果用户再次登录,我会要求用户再次验证他的电话号码,但是twitter结构允许他/她验证任何号码,但我想要twitter fabric Digits来验证我提供给twitter fabric的电话号码来自我的数据库 .

1 回答

  • 1

    来自Fabric团队的Todd来自这里 .

    这里最重要的考虑因素是您从服务器获取Digits详细信息,然后直接发送给我们 . 这样您的服务器就会收到可信用户信息 .

    首先,查询Digits以请求用户ID,电话号码和OAuth令牌 . 您应该使用OAuth Echo来实现此目的 .

    To generate OAuth Echo headers.

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

    TwitterAuthConfig 类封装凭证以标识您的Twitter或Digits应用程序 . 您可以从Digits类中获取此对象 .

    TwitterAuthToken 类表示Twitter的Digits用户的用户凭据 . 您可以从 TwitterSessionDigitsSession 获取此对象 .

    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 Map 包含 X-Auth-Service-ProviderX-Verify-Credentials-Authorization 键 . 您的Web服务器应该使用 X-Verify-Credentials-Authorization 中的值,并使用它来为 X-Auth-Service-Provider 中的URL设置 Authorization 标头 . 获得标头后,您可以将这些标头发送到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();
    

    For additional security, on your web host you should:

    验证 X-Verify-Credentials-Authorization 中的 oauth_consumer_key 标头值是否与您的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请求是否成功 .

    Reference on Verifying Digits Users in Android

相关问题