old_contents: # coding:utf8
  # author:hepochen@gmail.com  https://github.com/hepochen
  """
  Weibo OAuth2 backend, docs at:
      http://psa.matiasaguirre.net/docs/backends/weibo.html
  """
  from social.backends.oauth import BaseOAuth2
  
  
  class WeiboOAuth2(BaseOAuth2):
      """Weibo (of sina) OAuth authentication backend"""
      name = 'weibo'
      ID_KEY = 'uid'
      AUTHORIZATION_URL = 'https://api.weibo.com/oauth2/authorize'
      REQUEST_TOKEN_URL = 'https://api.weibo.com/oauth2/request_token'
      ACCESS_TOKEN_URL = 'https://api.weibo.com/oauth2/access_token'
      ACCESS_TOKEN_METHOD = 'POST'
      REDIRECT_STATE = False
      EXTRA_DATA = [
          ('id', 'id'),
          ('name', 'username'),
          ('profile_image_url', 'profile_image_url'),
          ('gender', 'gender')
      ]
  
      def get_user_details(self, response):
          """Return user details from Weibo. API URL is:
          https://api.weibo.com/2/users/show.json/?uid=<UID>&access_token=<TOKEN>
          """
          if self.setting('DOMAIN_AS_USERNAME'):
              username = response.get('domain', '')
          else:
              username = response.get('name', '')
          fullname, first_name, last_name = self.get_user_names(
              first_name=response.get('screen_name', '')
          )
          return {'username': username,
                  'fullname': fullname,
                  'first_name': first_name,
                  'last_name': last_name}
  
      def user_data(self, access_token, *args, **kwargs):
          return self.get_json('https://api.weibo.com/2/users/show.json',
                               params={'access_token': access_token,
                                       'uid': kwargs['response']['uid']})
  
new_contents: # coding:utf8
  # author:hepochen@gmail.com  https://github.com/hepochen
  """
  Weibo OAuth2 backend, docs at:
      http://psa.matiasaguirre.net/docs/backends/weibo.html
  """
  from social.backends.oauth import BaseOAuth2
  import json
  
  class WeiboOAuth2(BaseOAuth2):
      """Weibo (of sina) OAuth authentication backend"""
      name = 'weibo'
      ID_KEY = 'uid'
      AUTHORIZATION_URL = 'https://api.weibo.com/oauth2/authorize'
      REQUEST_TOKEN_URL = 'https://api.weibo.com/oauth2/request_token'
      ACCESS_TOKEN_URL = 'https://api.weibo.com/oauth2/access_token'
      ACCESS_TOKEN_INFO_URL = 'https://api.weibo.com/oauth2/get_token_info'
      ACCESS_TOKEN_METHOD = 'POST'
      REDIRECT_STATE = False
      EXTRA_DATA = [
          ('id', 'id'),
          ('name', 'username'),
          ('profile_image_url', 'profile_image_url'),
          ('gender', 'gender')
      ]
  
      def get_user_details(self, response):
          """Return user details from Weibo. API URL is:
          https://api.weibo.com/2/users/show.json/?uid=<UID>&access_token=<TOKEN>
          """
          if self.setting('DOMAIN_AS_USERNAME'):
              username = response.get('domain', '')
          else:
              username = response.get('name', '')
          fullname, first_name, last_name = self.get_user_names(
              first_name=response.get('screen_name', '')
          )
          return {'username': username,
                  'fullname': fullname,
                  'first_name': first_name,
                  'last_name': last_name}
  
      def get_uid(self, access_token):
          """ return uid by access_token"""
  
          response = self.request(self.ACCESS_TOKEN_INFO_URL,
                                  method='POST',
                                  params={'access_token':access_token})
  
          data = response.json()
          return data['uid']
  
      def user_data(self, access_token, *args, **kwargs):
          """ if use access_token for ajax auth, then would raise KeyError
          because there is no uid in response, so must get uid.
          """
          if 'response' not in kwargs or 'uid' not in kwargs['response']:
              uid = self.get_uid(access_token)
              response = kwargs.setdefault('response', {})
              response['uid'] = uid
  
          response = self.get_json('https://api.weibo.com/2/users/show.json',
                                  params={'access_token': access_token,
                                          'uid': kwargs['response']['uid']})
  
          response['uid'] = kwargs['response']['uid']
          return response
subject: Fix Issue #532, get UID when use access_token ajax auth in weibo backends.