There are two things you should look at and be aware of based on your question and example.
First, the way you handle alternate authentication methods (e.g. facebook oauth) are authentication backends. You can look at djangopackages.com for existing options or write your own. The backend(s) you have configured are what will define what parameters authenticate()
is expecting to receive (e.g. a facebook backend wouldn't expect a password as a password doesn't make sense in that context).
Second, doing user.password won't get you the user's actual password. As a security measure, Django stores passwords as salted one-way hashes. This means that, by design, you cannot determine a user's password based on what is stored in the database.