保存用户的oauth_token和oauth_token_secret的最佳做法 - Twitter API

时间:2017-06-20 20:07:10

标签: php twitter oauth-2.0 twitter-oauth

我正在创建一个Twitter API应用程序(使用PHP libray Abraham \ TwitterOAuth)。当用户验证应用程序时,我可以获得该用户的oauth_token和oauth_token_secret。 所以现在在哪里保存这些令牌供以后使用,以便用户不会一次又一次地对应用程序进行身份验证。

我可以将它们保存在Cookie中吗?

更新

@JánHalaša, 你好,谢谢你的回复。我在三个网站发布了这个问题,但没有得到任何答案或评论所以谢谢:)。以下是有关该应用的更多详细信息。

我正在使用“PHP Abraham \ TwitterOauth”Libray(使用Oauth2)。我的应用程序具有“读写”权限。它使用户能够将任何用户静音或取消静音。所以这是整个过程。

  1. 我要求用户登录,当用户点击登录时,他要求通过Twitter验证该应用程序。
  2. 2.一旦他验证了应用程序。他被重定向到回调网址。我请求用户的oauth_token和oauth_token_secret。我将这些令牌存储在cookie中,几乎没有加密。一些代码来自callback.php。

      $token = $connection->oauth(
    'oauth/access_token', [
        'oauth_verifier' => $oauth_verifier
           ]
          );
     $token['oauth_token']=openssl_encrypt($token['oauth_token'],"AES-128-ECB",$salt);
     $token['oauth_token_secret']=
     openssl_encrypt($token['oauth_token_secret'],"AES-128-ECB",$salt);
     setcookie('oauth_token', $token['oauth_token'],time() + (86400 * 30));
     setcookie('oauth_secret', $token['oauth_token_secret'],time() + (86400 *30));
     header('location:'mute_now.php');
     die();
    

    3.现在我将用户重定向到mute_now.php页面。我解密这些cookie并使用oath_token和oauth_secret代表用户从twitter获取数据。来自 mute_now.php 的some_code是

     $token['oauth_token'] = openssl_decrypt($_COOKIE['oauth_token'],"AES-128-ECB",$salt);
     $token['oauth_token_secret'] = openssl_decrypt($_COOKIE['oauth_token_secert'],"AES-128-ECB",$salt);
    
    $twitter = new TwitterOAuth(
     $config['consumer_key'],
     $config['consumer_secret'],
     $token['oauth_token'],
     $token['oauth_token_secret']
    );
    
    $user_info = $twitter->get(
     "account/verify_credentials"
      );
    $mutes = $twitter->get(
    "mutes/users/list", ['include_entities'=>false,'skip_status'=>true]
      );
    
    1. 现在如果用户再次访问我的网站。我查了一下cookie。如果有饼干。他不需要再次验证应用程序我直接将hime重定向到mute_now.php并使用这些cookie来获取oauth_token和oauth_token_secert
    2. 我主要担心的是安全问题。我知道用户不能在没有应用程序凭据(consumer_key和consumer_secret)的情况下使用这些令牌。但我仍然担心安全问题。我应该在发送cookie之前使用任何加密库,如“defuse / php-encryption”。还是其他任何建议请?

0 个答案:

没有答案