claabs / epicgames-freegames-node

Automatically login and find available free games the Epic Games Store. Sends you a prepopulated checkout link so you can complete the checkout after logging in. Supports multiple accounts, login sessions, and scheduled runs.
https://hub.docker.com/r/charlocharlie/epicgames-freegames
MIT License
1.29k stars 93 forks source link

Parental controls error prevents any game from being claimed #86

Open hernan43 opened 3 years ago

hernan43 commented 3 years ago

I don't want to call this a bug because I'm not sure that is what is happening. This may very well be the intended behavior.

I have this app running in a Docker container. It is using 3 accounts. One which is mine, and two which have parental controls for my kids.

Recently there were 2 free games available one rated ESRB 'T' and one rated ESRB 'M'. The app successfully claimed both games for my account. For the two kid accounts, I got an error "Sorry, please verify you parental control PIN to proceed."

This is expected for the M rated game as those two accounts have parental controls turned on. But it did not even attempt to try and claim the T rated game. It's like it stopped processing altogether:

[2021-02-04 12:02:14.412 -0500] INFO (64 on 4fa3b7245678): Unpurchased free games
user: "kid1@gmail.com"
purchasableGames: [
"Metro: Last Light Redux",
"Sludge Life",
"For The King"
]
[2021-02-04 12:02:14.412 -0500] INFO (64 on 4fa3b7245678): Purchasing Metro: Last Light Redux
user: "kid1@gmail.com"
[2021-02-04 12:02:15.706 -0500] ERROR (64 on 4fa3b7245678):

message: "Sorry, please verify you parental control PIN to proceed."
[2021-02-04 12:02:15.707 -0500] ERROR (HTTPError/64 on 4fa3b7245678): Response code 400 (Bad Request)

HTTPError: Response code 400 (Bad Request)
at PromisableRequest.<anonymous> (/usr/app/node_modules/got/dist/source/as-promise/index.js:124:28)
at runMicrotasks (<anonymous>)
at processTicksAndRejections (internal/process/task_queues.js:97:5)

I thought it would check per game, but again this may be the intended behavior. I am just wondering if there is any way around this or if it is just a quirk of using parental controls on those two accounts.

Thanks for the software, it's been awesome!

claabs commented 3 years ago

This is actually a really cool use case! I never thought about the parental control feature. The logic right now is to fail fast on an unexpected error, so if the error occurs before it attempts to purchase the other games, it will stop the process for that account.

I think I can just add an explicit catch for the parental PIN and let it continue to the next game. That should be pretty simple.

Otherwise, I had another idea:

I'm not sure how the parental control feature works for Epic Games, but would it make sense to add a parentalPin config for each account, so it could redeem the games? Does the kid's account still need a parental pin to launch a rated M game, or is the restriction just at purchase? Just throwing a thought out there.

hernan43 commented 3 years ago

I had thought about the pin thing. Because using the pin doesn't turn off the parental controls on the account. I haven't tried it, but I thought maybe it was going to force the pin to be entered to allow the game to be installed.

If it works that would be a great workaround. Then when they get old enough they will have a nice library of all the dirty games they can handle. :-)

--edit-- I'd be willing to try the parentPin idea and test it out.

claabs commented 3 years ago

It looks like it just restricts purchasing and playtime (source), so I doesn't look like the parentalPin config wouldn't be a good idea, since you could just disable purchase protection.

I'll look at catching the PIN error, though.