Too specific of a uecase so it's not covered by any of our plugins. You'd need a means of verifying they've visited your Facebook page using Facebook API or you'd need to implement click tracking to see if they clicked the link. In both cases a stored database value is needed for persistence so when they come back they can freely download still.
If you update a field value after clicking the link you maybe able to do this by conditioning a gallery to show/hide based off the field value using CB Conditional. You maybe able to accomplish this with CB Auto Actions, but you'll need 3 auto actions as follows.
Action 1
Global
Triggers: None
Type: Field
User: User
Access: All Registered Users
Action
Field: cb_lookedatfacebook (this is a checkbox field for this test)
Operator: Set
Value: 1
Action 2
Global
Triggers: None
Type: Redirect
User: User
Access: All Registered Users
Action
URL: FACEBOOK_URL_HERE
Action 3
Global
Triggers: None
Type: Action
User: User
Access: All Registered Users
Action
Actions: Action 1 and Action 2
Note it is vital that Action 1 be ordered before Action 2 as it needs to execute first before the redirect. Now under the Global tab of Action 3 is a URL to directly execute it. This is what you'd send people to IF your cb_lookedatfacebook is not equal to 1, which could be used in CB Conditional or a Custom HTML field maybe. Example as follows.
Code:
[cb:if cb_lookedatfacebook="1"]DOWNLOAD_BUTTON[cb:else]LINK_TO_ACTION[/cb:else][/cb:if]