One problem is that calling only ggplot() will not produce a plot. You must add to that a layer to define how the data are displayed. For example
ggplot(data(), aes(x, y)) + geom_point()
Also, the intersect() function will return a vector of characters, so you must use aes_string() instead of aes()
If intersect returns all three of "a", "b", and "c", aes_string() will not know what to do with the third value. Do you know that there will always be a fixed number of returned values from intersect()?
It is not clear what data() is, so I have to assume you have that correctly defined.
I suggest you first get your plot working outside of shiny using just a data frame, the vector possible_name, intersect() and a correct call to ggplot(). When that is working, move to implementing it in shiny.