Many years ago, John, trying to bring up his courage, got completely pissed at a club and ends up taking home his first and last male partner - Mycroft. One thing leads to another and Mycroft, for whatever reason, decides not to go through with it. Unfortunately, John doesn't take "no" for an answer and ends up raping Mycroft.
Fast forward to years in the future - John doesn't remember anything that happened. So Mycroft decides to never say anything for fear of losing Sherlock his one and only friend.
And then it all comes to light.
Bonus: The whole "I'm not gay" thing is a weird subconscious hangover from the horrible thing John did.
John/Mycroft, Past Non-con
Fast forward to years in the future - John doesn't remember anything that happened. So Mycroft decides to never say anything for fear of losing Sherlock his one and only friend.
And then it all comes to light.
Bonus: The whole "I'm not gay" thing is a weird subconscious hangover from the horrible thing John did.