An OAuth mixin for Asteroid. You can use an available provider (check the list of available provider) or you can add a custom provider.
npm install asteroid-oauth
After cloning the repository, install npm
dependencies with npm install
.
Run npm test
to run unit tests, or npm run dev
to have mocha
re-run your tests when source or test files change.
import {createClass} from "asteroid";
import * as asteroidOauthMixin from "asteroid-oauth";
const Asteroid = createClass([asteroidOauthMixin]);
const asteroid = new Asteroid({platform, endpoint});
/*
* You need to define a `getServiceConfig` method (either in a mixin or on the
* instance itself) which returns a plain object containing the configuration
* for the specified provider. Such configurations are stored in the
* `meteor_accounts_loginServiceConfiguration` collection, which the oauth
* mixin automatically retrieves by subscribing to
* `meteor.loginServiceConfiguration`, a subscription published - by default -
* by the meteor server.
* A naive implementation could be the following:
*/
asteroid.ddp.on("added", ({collection, id, fields}) => {
if (collection === "meteor_accounts_loginServiceConfiguration") {
asteroid.loginServiceConfiguration = {
...asteroid.loginServiceConfiguration,
[id]: {
_id: id,
...fields
}
};
}
});
asteroid.getServiceConfig = providerName => {
return this.loginServiceConfiguration[providerName];
}
/*
* Somewhere in your code
*/
asteroid.loginWith("facebook")
.then(() => console.log("login successful"))
.catch(() => console.log("error logging in"))
import {createClass} from "asteroid";
import * as asteroidOauthMixin from "asteroid-oauth";
import * as asteroidImmutableMixin from "asteroid-immutable-collections-mixin";
const Asteroid = createClass([asteroidImmutableMixin, asteroidOauthMixin]);
const asteroid = new Asteroid({platform, endpoint});
/*
* Somewhere in your code
*/
asteroid.loginWith("facebook")
.then(() => console.log("login successful"))
.catch(() => console.log("error logging in"))
This is the method used to login.
-
providerName
string required: the provider name with whom you want to login with Oauth. -
scope
string optional: you might need to request access to APIs, depending on the level of access you need. Forgoogle
provider, thedefault
is set toopenid email
.
A promise to the method return value (the promise is rejected if the method throws).
This is used to set a custom provider.
provider
string required: the provider name with whom you want to add to the list of available provider.
Nothing.