![require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages](https://cdn.sanity.io/images/cgdhsj6q/production/be8ab80c8efa5907bc341c6fefe9aa20d239d890-1600x1097.png?w=400&fit=max&auto=format)
Security News
require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Easy authentication with OpenStreetMap over OAuth with CORS.
Try it out now at: http://osmlab.github.io/osm-auth/
Or you can run the demo locally by cloning this project, then run:
$ npm install
$ npm run build
$ npm start
This will start a local server on port 8080. Then open http://localhost:8080
in a browser.
Copy osmauth.js
, use the osmAuth
object. This uses
UMD, so it's compatible
with RequireJS etc too, if you're into that kind
of thing.
$ npm install osm-auth
var osmAuth = require('osm-auth');
Requires land.html to be accessible, or a page that does the same thing - calls an auth complete function - to be available.
Register a new OAuth application on openstreetmap.org:
var auth = osmAuth({
oauth_consumer_key: 'WLwXbm6XFMG7WrVnE8enIF6GzyefYIN6oUJSxG65',
oauth_secret: '9WfJnwQxDvvYagx1Ut0tZBsOZ0ZCzAvOje3u1TV0',
auto: true // show a login form if the user is not authenticated and
// you try to do a call
});
document.getElementById('authenticate').onclick = function() {
// Signed method call - since `auto` is true above, this will
// automatically start an authentication process if the user isn't
// authenticated yet.
auth.xhr({
method: 'GET',
path: '/api/0.6/user/details'
}, function(err, details) {
// details is an XML DOM of user details
});
};
var auth = osmAuth({
oauth_consumer_key: 'WLwXbm6XFMG7WrVnE8enIF6GzyefYIN6oUJSxG65',
oauth_secret: '9WfJnwQxDvvYagx1Ut0tZBsOZ0ZCzAvOje3u1TV0',
auto: true,
singlepage: true, // Load the auth-window in the current window, with a redirect,
landing: window.location.href // Come back to the current page
});
var urlParams = new URLSearchParams(window.location.search);
if(urlParams.has('oauth_token')){
// The token passed via the URL has to be passed into 'auth.bootstrapToken'. The callback is triggered when the final roundtrip is done
auth.bootstrapToken(urlParams.get('oauth_token'),
(error) => {
if(error !== null){
console.log("Something is wrong: ", error);
return;
}
/* Do authenticated stuff here*/
}, this.auth);
}else{
// Attempt to do something authenticated to trigger authentication
}
.osmAuth(options)
At a minimum, options must contain an OAuth consumer key and secret:
{
oauth_secret: ...
oauth_consumer_key: ...
}
Additional options are:
url
for a base url (default: "https://www.openstreetmap.org")landing
for a landing page name (default: "land.html")loading
: a function called when auth-related xhr calls startdone
: a function called when auth-related xhr calls endsinglepage
: use full-page redirection instead of a popup for mobile.logout()
.authenticated()
: am I authenticated?
.authenticate(callback)
Tries to authenticate. Calls callback if successful.
.bringPopupWindowToFront()
Tries to bring an existing authentication popup to the front. Returns true
on success or false
if there is no
authentication popup or if it couldn't be brought to the front (e.g. because of cross-origin restrictions).
.xhr(options, callback)
Signed XMLHttpRequest.
Main options are url
and method
.
.options(options)
Set new options.
Uses ohauth and store.js behind the scenes.
Built for and used by OpenStreetMap's iD editor.
1.1.1
FAQs
A usable example of JavaScript OAuth 2.0 with OpenStreetMap
The npm package osm-auth receives a total of 686 weekly downloads. As such, osm-auth popularity was classified as not popular.
We found that osm-auth demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.