Commerce is going to require an email address to checkout. It's a required field for a customer.
You could try to "fake" an email address and then try to update it before the order completes (
beforeCompleteOrder) after the transaction succeeds, but I think that's more error prone because Commerce has already setup a customer and order details based on that information.
However, you could work around it.
I'm not sure how your payment provider works but on the cart page, you could start the payment process "manually".
Every field is optional - up until you send the order to Commerce Payment model.
You might have a button that says "Login with Provider" or whatever on the cart page. After someone presses that button, behind the scenes, you're calling your own logic.
You might set some fields up for that session including a token to continue the transaction. As far as Commerce is concerned, it hasn't started checkout yet but it feels that way to the customer.
Then after you've grabbed the customer's details and setup the cart, then you can proceed with sending Commerce the details it needs.