If you wish to get the country code without asking for any permission, you can choose a tricky way.
The method simply uses an API to get the country code, and there aren't any third-party libraries to depend on. We can create one for us.
Here I have used Google Cloud Functions to write an API and it is so effortless.
Step 1: Create a Google Cloud Account, and set up billing (the free tier is enough)
Step 2: Create a cloud function to get the geo location
Copy this basic function to the code editor of index.js:
const cors = require('cors')
function _geolocation(req, res) {
const data = {
country_code: req.headers["x-appengine-country"],
region: req.headers["x-appengine-region"],
city: req.headers["x-appengine-city"],
cityLatLong: req.headers["x-appengine-citylatlong"],
userIP: req.headers["x-appengine-user-ip"]
}
res.json(data)
};
exports.geolocation = (req, res) => {
const corsHandler = cors({ origin: true })
return corsHandler(req, res, function() {
return _geolocation(req, res);
});
};
Also we need to copy the package.json definition:
{
"name": "gfc-geolocation",
"version": "0.0.1",
"dependencies": {
"cors": "^2.8.4"
}
}
Step 3: finish, and get the URL similar to: "https://us-central1-geolocation-mods-sdde.cloudfunctions.net/geolocation"
Step 4: parse the JSON response and get the country code
The response will look like:
{
"country": "IN",
"region": "kl",
"city": "kochi",
"cityLatLong": "9.9312,76.2673",
"userIP": "xx.xx.xx.xx"
}
Thanks and credits go to the Medium article: Free IP-based Geolocation with Google Cloud Functions