Hybrid(4)Favorite Places - Google Login
Requirements:
1. Google Login
2. CRUD Places
3. CRUD Events
Create meteor in an existing directory.
https://github.com/aldeed/meteorify
Then I can directly go to the project directory.
> meteorify
This command will show us we already have the meteor env
> meteor update
I create the favicon here. http://www.favicon.cc/
I create and place this icon in the directory public/favicon.ico.
Add the routes ability, add angular, these tools will be added to
>vi .meteor/packages
>meteor add urigo:angular
>meteor add angularui:angular-ui-router
It loads the files in sub directory first, and then the main directory.
remove the secure
> meteor remove insecure
Add user and password
> meteor add accounts-password
> meteor add accounts-ui
> meteor add accounts-facebook
> meteor add accounts-twitter
> meteor add accounts-google
> meteor add pauli:accounts-linkedin
> meteor add accounts-github
Set up Google API -
create the Project first from here https://code.google.com/apis/console/
Go to “APIs&auth” —> “Consent Screen” —> Make sure we have project names there
Go to “APIs&auth” —> “Credentials” —> Create new Client ID —> I chose web application
Redirect URIs
- http://localhost:3000/_oauth/google
JavaScript origins
- http://localhost:3000/
Configure the things there, it is working well.
Privacy and Publish
> meteor remove autopublish
Here is how to connect to the mongo db
> meteor mongo
some mongo command
> meteor:PRIMARY> show dbs
> meteor:PRIMARY> show collections
meteor:PRIMARY> db.places.find();
{ "_id" : "pkFtw59utKc8qtmBz", "name" : "Commons Ford Park", "desc" : "A good place for fishing." }
{ "_id" : "mgifXhdz7wCvigLTM", "name" : "Brushy creek park", "desc" : "It is close." }
{ "_id" : "BFXexh6wEd5GBDJGN", "name" : "Lago", "desc" : "It is far." }
Latest JSON format is here
http://angular-meteor.com/tutorials/angular1/privacy-and-publish-subscribe-functions
Deploy the App
> meteor deploy sillycat.meteor.com
this will just deploy the things directly to meteor, I will check how to deploy it myself.
Running Android or iOS
load the angular application in app.js
//load the modules
angular.module('favorite',['angular-meteor', 'ui.router']);
function onReady(){
angular.bootstrap(document, ["favorite"]);
}
if(Meteor.isCordova){
angular.element(document).on("deviceready", onReady);
}else{
angular.element(document).ready(onReady);
}
Remove the index.html ng-app part
How to submit to Play Store
https://github.com/meteor/meteor/wiki/How-to-submit-your-Android-app-to-Play-Store
How to submit to Apple Store
https://github.com/meteor/meteor/wiki/How-to-submit-your-iOS-app-to-App-Store
Oauth is only working in iOS simulator right now
https://github.com/meteor/meteor/wiki/OAuth-for-mobile-Meteor-clients
>meteor run ios
Deploy to meteor
> meteor deploy sillycat.meteor.com
Run the android
> meteor run android --mobile-server http://sillycat.meteor.com
How to Customer Login and Configuration
http://docs.meteor.com/#/full/meteor_loginwithexternalservice
http://meteor.hromnik.com/blog/login-with-facebook-twitter-and-google-in-meteor
http://themeteorchef.com/recipes/roll-your-own-authentication/
https://github.com/lc3t35/googlelogin
Meteor source codes for OAuth
https://github.com/meteor/meteor
meteor/packages/oauth/oauth_common.js
meteor/packages/oauth/oauth_cordova.js
We can easily login with google and github after using this command.
> meteor add accounts-github
> meteor add accounts-google
But that will put a lot of user tokens and informations in users table. I may check the customer Oauth login.
Check the Accounts API
http://docs.meteor.com/#/full/accounts_api
Take the code samples from here
https://github.com/lc3t35/googlelogin
https://github.com/m2web/githublogin
https://www.eventedmind.com/feed/meteor-customizing-login
http://docs.meteor.com/#/full/accounts_validatenewuser
http://angular-meteor.com/api/auth
That is the scopes info
scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly+profile
Google Request
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=399670218895-7udn2k468l25g1rfta91djdbrklrs0p1.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly+profile&redirect_uri=http://localhost:3000/_oauth/google&state=eyJsb2dpblN0eWxlIjoicmVkaXJlY3QiLCJjcmVkZW50aWFsVG9rZW4iOiJVQUR1YWxvdmxOeUtoWFROUkQ5cG5KUVFOOG53QTlTczVrcHIteFNDUVk4IiwiaXNDb3Jkb3ZhIjpmYWxzZSwicmVkaXJlY3RVcmwiOiJodHRwOi8vbG9jYWxob3N0OjMwMDAvcGxhY2VzIn0=&access_type=online&
[email protected]
https://accounts.google.com/o/oauth2/auth?prompt=consent&response_type=code&client_id=399670218895-7udn2k468l25g1rfta91djdbrklrs0p1.apps.googleusercontent.com&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgmail.readonly%20profile&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2F_oauth%2Fgoogle%3Fclose&state=eyJsb2dpblN0eWxlIjoicmVkaXJlY3QiLCJjcmVkZW50aWFsVG9rZW4iOiJMRGZXVko0NExfZGNKSTJpdDNaSXk3UW9id2JuaklvSWRxX1pNZ1NfWlh5IiwiaXNDb3Jkb3ZhIjpmYWxzZSwicmVkaXJlY3RVcmwiOiJodHRwOi8vbG9jYWxob3N0OjMwMDAvIn0%3D&
[email protected]
Login hint
https://developers.google.com/identity/protocols/OpenIDConnect
We will need latest meteor to support the login hint.
> git clone git://github.com/meteor/meteor.git
> cd meteor/
> ./scripts/generate-dev-bundle.sh
> ./meteor --version
Remove the old meteor
> rm -fr ~/.meteor/
> sudo rm /usr/local/bin/meteor
Link the directory to path and verify the installation
> meteor --version
Unreleased, running from a checkout at 927745a (HEAD, origin/devel, origin/HEAD, devel)
go to your working directory, update the current project
> rm -fr .meteor/local/*
> meteor update
> meteor update --allow-incompatible-update
Run the application after update
> meteor --settings settings.json run ios
Switch to the current meteor version
> git checkout v0.5.2
Check the version
> ./meteor --version
It's the first time you've run Meteor from a git checkout.
I will download a kit containing all of Meteor's dependencies.
######################################################################## 100.0%
Installed dependency kit v0.2.8 in dev_bundle.
Meteor version 0.5.2 (git checkout)
>. ~/.profile
>meteor --version
Meteor version 0.5.2 (git checkout)
Download the try the current release version
https://github.com/meteor/meteor/releases
https://github.com/meteor/meteor/releases/tag/release%2FMETEOR%401.1.0.3
Login Hint is an open issue on meteor, but I failed to build the source codes
https://github.com/meteor/meteor/issues/2422
The fix is here
https://github.com/bradvogel/meteor/tree/add-loginHint-oauth-param
Changes of the files
https://github.com/meteor/meteor/pull/2790/files
Publish and Call
http://docs.meteor.com/#/full/meteor_users
It seems that this version works
https://github.com/meteor/meteor/tree/release-1.2
How to Deploy on Local
$ (cd programs/server && npm install)
$ export MONGO_URL='mongodb://user:password@host:port/databasename'
$ export ROOT_URL='http://example.com'
$ export MAIL_URL='smtp://user:password@mailhost:port/'
$ node main.js
Tips:
Run the linter with ./scripts/admin/eslint/eslint.sh
If you know what you are doing you can disable this
check using:
git config hooks.ignore-eslint true
References:
https://developers.google.com/apis-explorer/#p/
https://www.googleapis.com/auth/userinfo.profile
https://developers.google.com/+/web/samples/java
https://github.com/googleplus/gplus-quickstart-java
scopes
http://itquestionz.com/questions/3346410/how-to-request-extra-oauth-scopes-in-meteor-accounts
meteor DDP
https://meteorhacks.com/discover-meteor-ddp-in-realtime
http://stackoverflow.com/questions/25373648/how-to-view-meteor-ddp-traffic/25373867#25373867
https://github.com/rclai/meteor-ddp-inspector
http://meteorpedia.com/read/DDP_Clients
build client
meteor build
https://github.com/frozeman/meteor-build-client
functional test
http://arunoda.github.io/laika/
performance test
https://meteorhacks.com/cluster-performance-test-its-impressive
https://github.com/meteorhacks/meteor-down
Redis
https://github.com/meteor/redis-livedata
AWS
https://github.com/peerlibrary/meteor-aws-sdk
jslint
http://blog.philippundhee.ch/lint-your-meteor-project/