<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
`ansible-galaxy login` uses the OAuth Authorizations API which is going to be deprecated on November 13, 2020. Any applications authenticating for users need to switch to their newer methods: https://docs.github.com/en/developers/apps/authorizing-oauth-apps#device-flow

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
ansible-galaxy login

##### ANSIBLE VERSION
This affects all versions.

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below

```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
This affects all environments.


##### STEPS TO REPRODUCE
Everything still works today, but will fail in about 10 weeks.

There are brownout times when we should see failures to login via the CLI.

The brownouts are scheduled for:

    September 30, 2020
        From 07:00 UTC to 10:00 UTC
        From 16:00 UTC to 19:00 UTC

    October 28, 2020
        From 07:00 UTC to 10:00 UTC
        From 16:00 UTC to 19:00 UTC

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
Today login works with a user's Github username and password, as long as that user has not enabled 2FA.

##### ACTUAL RESULTS
On November 13 this method will no longer work and no user will be able to authenticate via Github, which is the only authentication mechanism we have for the current version of Ansible Galaxy.

This is *not* an issue we can resolve on the Galaxy side, it has to be resolved in the client.

meta_path = os.path.join(collection_skeleton, 'galaxy.yml')
    with open(meta_path, 'r') as galaxy_meta:
        metadata = yaml.safe_load(galaxy_meta)
    rt metadata['namespace'] == 'ansible_test'
    rt metadata['name'] == 'my_collection'
    rt metadata['authors'] == ['your name <example@domain.com>']
    rt metadata['readme'] == 'README.md'
    rt metadata['version'] == '1.0.0'
    rt metadata['description'] == 'your collection description'
    rt metadata['license'] == ['GPL-2.0-or-later']
    rt metadata['tags'] == []
    rt metadata['dependencies'] == {}
    rt metadata['documentation'] == 'http://docs.example.com'
    rt metadata['repository'] == 'http://example.com/repository'
    rt metadata['homepage'] == 'http://example.com'
    rt metadata['issues'] == 'http://example.com/issue/tracker'
    for d in ['docs', 'plugins', 'roles']:
        rt os.path.isdir(os.path.join(collection_skeleton, d)), \
            "Expected collection subdirectory {0} doesn't exist".format(d)
@pytest.mark.parametrize('collection_skeleton', [
    ('ansible_test.delete_me_skeleton', os.path.join(os.path.split(__file__)[0], 'test_data', 'collection_skeleton')),
], indirect=True)
def test_collection_skeleton(collection_skeleton):