def odnoklassniki_oauth_sig(data, client_secret):
 suffix = md5('{0:s}{1:s}'.format(data['access_token'], client_secret).encode('utf-8')).hexdigest()
 check_list = sorted(['{0:s}={1:s}'.format(key, value) for (key, value) in data.items() if (key != 'access_token')])
 return md5((''.join(check_list) + suffix).encode('utf-8')).hexdigest()

def odnoklassniki_oauth_sig ( data , client_secret ) : suffix = md5 ( '{0:s}{1:s}' . format ( data [ 'access_token' ] , client_secret ) . encode ( 'utf-8' ) ) . hexdigest ( ) check_list = sorted ( [ '{0:s}={1:s}' . format ( key , value ) for ( key , value ) in data . items ( ) if ( key != 'access_token' ) ] ) return md5 ( ( '' . join ( check_list ) + suffix ) . encode ( 'utf-8' ) ) . hexdigest ( )
calculates signature of request data access_token value must be included algorithm is described at URL search for "little bit different way" .