AmazonAuth
Sign In Amazon using Capybara and Selenium
Recorded with Recordit
Installation
Add this line to your application's Gemfile:
gem 'amazon_auth'
And then execute:
$ bundle
Or install it yourself as:
$ gem install amazon_auth
Requirements
- chromedriver
Before running, you need to download chromedriver.
And you may need to update chromedriver regularly.
Please download latest chromedriver_xxx.zip from https://chromedriver.storage.googleapis.com/index.html and place it somewhere on your PATH.
mv ~/Downloads/chromedriver /usr/local/bin/
Usage
Set Amazon credentials on your local machine
[Quick] You can set login and password in console.
[Recommended] Or you can convert them to protect them against shoulder surfing.
Run amazon_auth
and paste the output to .env.
(AMAZON_USERNAME_CODE
, AMAZON_PASSWORD_CODE
and AMAZON_CODE_SALT
)
envchain for security
You can store environment variables in macOS Keychain instead of dotenv. Check out envchain
brew install envchain
envchain --set amazon AMAZON_DOMAIN AMAZON_USERNAME_CODE AMAZON_PASSWORD_CODE AMAZON_CODE_SALT
# Run console with envchain
envchain amazon bin/console
envchain amazon bundle exec irb
envchain amazon rails console
Run
In console, you can move around pages using Capybara DSL
# Without credentials in .env
client = AmazonAuth::Client.new(login: 'your_amazon_email', password: 'your_amazon_password')
# With credentials in .env
client = AmazonAuth::Client.new
# Sign in
client.sign_in
# Continue to the page for Kindle
link = client.links_for('#navFooter a').find{|link| link =~ %r{/gp/digital/fiona/manage/} }
client.session.visit link
Use amazon site in different domain
Set AMAZON_DOMAIN
in .env.
e.g. AMAZON_DOMAIN=amazon.co.jp
for Japanese site
Keep cookies
Using capybara-sessionkeeper gem
client = AmazonAuth::Client.new(keep_cookie: true, debug: true)
You can change Capyabra.save_path when it isn't set
client = AmazonAuth::Client.new(keep_cookie: true, save_path: 'tmp/cookies', debug: true)
Logging
Normal logging
client = AmazonAuth::Client.new(verbose: true)
More logging (This includes session.current_url
)
client = AmazonAuth::Client.new(debug: true)
Use Firefox
In console,
client = AmazonAuth::Client.new(driver: :firefox)
Development
Use .env.development instead of .env in development.
git clone https://github.com/kyamaguchi/amazon_auth.git
cd amazon_auth
bundle
./exe/amazon_auth
vi .env.development
rspec
./bin/console
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/kyamaguchi/amazon_auth.
License
The gem is available as open source under the terms of the MIT License.