Correct usage of hook_user_login and hook_user_presave for saving data to user
IMO you don't need the implementation of the hook_user_presave(), I see that in the implementation of hook_user_login() you have all the values that you need to create the user.