UNPKG

hellojs-xiaotian

Version:

A clientside Javascript library for standardizing requests to OAuth2 web services (and OAuth1 - with a shim)

92 lines (72 loc) 1.77 kB
// Vkontakte (vk.com) (function(hello) { hello.init({ vk: { name: 'Vk', // See https://vk.com/dev/oauth_dialog oauth: { version: 2, auth: 'https://oauth.vk.com/authorize', grant: 'https://oauth.vk.com/access_token' }, // Authorization scopes // See https://vk.com/dev/permissions scope: { email: 'email', friends: 'friends', photos: 'photos', videos: 'video', share: 'share', offline_access: 'offline' }, // Refresh the access_token refresh: true, login: function(p) { p.qs.display = window.navigator && window.navigator.userAgent && /ipad|phone|phone|android/.test(window.navigator.userAgent.toLowerCase()) ? 'mobile' : 'popup'; }, // API Base URL base: 'https://api.vk.com/method/', // Map GET requests get: { me: function(p, callback) { p.query.fields = 'id,first_name,last_name,photo_max'; callback('users.get'); } }, wrap: { me: function(res, headers, req) { formatError(res); return formatUser(res, req); } }, // No XHR xhr: false, // All requests should be JSONP as of missing CORS headers in https://api.vk.com/method/* jsonp: true, // No form form: false } }); function formatUser(o, req) { if (o !== null && 'response' in o && o.response !== null && o.response.length) { o = o.response[0]; o.id = o.uid; o.thumbnail = o.picture = o.photo_max; o.name = o.first_name + ' ' + o.last_name; if (req.authResponse && req.authResponse.email !== null) o.email = req.authResponse.email; } return o; } function formatError(o) { if (o.error) { var e = o.error; o.error = { code: e.error_code, message: e.error_msg }; } } })(hello);