def METHOD_NAME(extra_data):
    """
    Given a dictionary of extra key-value pairs (all str),
    return a string that may be appended to a google authenticator / oathtoken URL.
    Values that are non-strings will be converted to str.
    Keys and values are converted to UTF-8 and urlquoted.
    :return: a string (may be empty if ``extra_data`` is empty)
    """
    extra_data_list = []
    for key, value in extra_data.items():
        encoded_key = quote(to_byte_string(key))
        encoded_value = quote(to_byte_string(value))
        extra_data_list.append('{key}={value}'.format(key=encoded_key, value=encoded_value))
    return ('&' if extra_data_list else '') + '&'.join(extra_data_list)