qq.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. "use strict";
  2. // Helper functions for accessing the qq Graph API.
  3. const httpsRequest = require('./httpsRequest');
  4. var Parse = require('parse/node').Parse;
  5. // Returns a promise that fulfills iff this user id is valid.
  6. function validateAuthData(authData) {
  7. return graphRequest('me?access_token=' + authData.access_token).then(function (data) {
  8. if (data && data.openid == authData.id) {
  9. return;
  10. }
  11. throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'qq auth is invalid for this user.');
  12. });
  13. }
  14. // Returns a promise that fulfills if this app id is valid.
  15. function validateAppId() {
  16. return Promise.resolve();
  17. }
  18. // A promisey wrapper for qq graph requests.
  19. function graphRequest(path) {
  20. return httpsRequest.get('https://graph.qq.com/oauth2.0/' + path, true).then(data => {
  21. return parseResponseData(data);
  22. });
  23. }
  24. function parseResponseData(data) {
  25. const starPos = data.indexOf('(');
  26. const endPos = data.indexOf(')');
  27. if (starPos == -1 || endPos == -1) {
  28. throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, 'qq auth is invalid for this user.');
  29. }
  30. data = data.substring(starPos + 1, endPos - 1);
  31. return JSON.parse(data);
  32. }
  33. module.exports = {
  34. validateAppId,
  35. validateAuthData,
  36. parseResponseData
  37. };
  38. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJodHRwc1JlcXVlc3QiLCJyZXF1aXJlIiwiUGFyc2UiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJncmFwaFJlcXVlc3QiLCJhY2Nlc3NfdG9rZW4iLCJ0aGVuIiwiZGF0YSIsIm9wZW5pZCIsImlkIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwidmFsaWRhdGVBcHBJZCIsIlByb21pc2UiLCJyZXNvbHZlIiwicGF0aCIsImdldCIsInBhcnNlUmVzcG9uc2VEYXRhIiwic3RhclBvcyIsImluZGV4T2YiLCJlbmRQb3MiLCJzdWJzdHJpbmciLCJKU09OIiwicGFyc2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvcXEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gSGVscGVyIGZ1bmN0aW9ucyBmb3IgYWNjZXNzaW5nIHRoZSBxcSBHcmFwaCBBUEkuXG5jb25zdCBodHRwc1JlcXVlc3QgPSByZXF1aXJlKCcuL2h0dHBzUmVxdWVzdCcpO1xudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmZiB0aGlzIHVzZXIgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUF1dGhEYXRhKGF1dGhEYXRhKSB7XG4gIHJldHVybiBncmFwaFJlcXVlc3QoJ21lP2FjY2Vzc190b2tlbj0nICsgYXV0aERhdGEuYWNjZXNzX3Rva2VuKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgaWYgKGRhdGEgJiYgZGF0YS5vcGVuaWQgPT0gYXV0aERhdGEuaWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdxcSBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfSk7XG59XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWYgdGhpcyBhcHAgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUFwcElkKCkge1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG59XG5cbi8vIEEgcHJvbWlzZXkgd3JhcHBlciBmb3IgcXEgZ3JhcGggcmVxdWVzdHMuXG5mdW5jdGlvbiBncmFwaFJlcXVlc3QocGF0aCkge1xuICByZXR1cm4gaHR0cHNSZXF1ZXN0LmdldCgnaHR0cHM6Ly9ncmFwaC5xcS5jb20vb2F1dGgyLjAvJyArIHBhdGgsIHRydWUpLnRoZW4oZGF0YSA9PiB7XG4gICAgcmV0dXJuIHBhcnNlUmVzcG9uc2VEYXRhKGRhdGEpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFyc2VSZXNwb25zZURhdGEoZGF0YSkge1xuICBjb25zdCBzdGFyUG9zID0gZGF0YS5pbmRleE9mKCcoJyk7XG4gIGNvbnN0IGVuZFBvcyA9IGRhdGEuaW5kZXhPZignKScpO1xuICBpZiAoc3RhclBvcyA9PSAtMSB8fCBlbmRQb3MgPT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ3FxIGF1dGggaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICB9XG4gIGRhdGEgPSBkYXRhLnN1YnN0cmluZyhzdGFyUG9zICsgMSwgZW5kUG9zIC0gMSk7XG4gIHJldHVybiBKU09OLnBhcnNlKGRhdGEpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgdmFsaWRhdGVBcHBJZCxcbiAgdmFsaWRhdGVBdXRoRGF0YSxcbiAgcGFyc2VSZXNwb25zZURhdGEsXG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0EsTUFBTUEsWUFBWSxHQUFHQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7QUFDOUMsSUFBSUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUNDLEtBQUs7O0FBRXZDO0FBQ0EsU0FBU0MsZ0JBQWdCQSxDQUFDQyxRQUFRLEVBQUU7RUFDbEMsT0FBT0MsWUFBWSxDQUFDLGtCQUFrQixHQUFHRCxRQUFRLENBQUNFLFlBQVksQ0FBQyxDQUFDQyxJQUFJLENBQUMsVUFBVUMsSUFBSSxFQUFFO0lBQ25GLElBQUlBLElBQUksSUFBSUEsSUFBSSxDQUFDQyxNQUFNLElBQUlMLFFBQVEsQ0FBQ00sRUFBRSxFQUFFO01BQ3RDO0lBQ0Y7SUFDQSxNQUFNLElBQUlSLEtBQUssQ0FBQ1MsS0FBSyxDQUFDVCxLQUFLLENBQUNTLEtBQUssQ0FBQ0MsZ0JBQWdCLEVBQUUsbUNBQW1DLENBQUM7RUFDMUYsQ0FBQyxDQUFDO0FBQ0o7O0FBRUE7QUFDQSxTQUFTQyxhQUFhQSxDQUFBLEVBQUc7RUFDdkIsT0FBT0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQztBQUMxQjs7QUFFQTtBQUNBLFNBQVNWLFlBQVlBLENBQUNXLElBQUksRUFBRTtFQUMxQixPQUFPaEIsWUFBWSxDQUFDaUIsR0FBRyxDQUFDLGdDQUFnQyxHQUFHRCxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUNULElBQUksQ0FBQ0MsSUFBSSxJQUFJO0lBQ2xGLE9BQU9VLGlCQUFpQixDQUFDVixJQUFJLENBQUM7RUFDaEMsQ0FBQyxDQUFDO0FBQ0o7QUFFQSxTQUFTVSxpQkFBaUJBLENBQUNWLElBQUksRUFBRTtFQUMvQixNQUFNVyxPQUFPLEdBQUdYLElBQUksQ0FBQ1ksT0FBTyxDQUFDLEdBQUcsQ0FBQztFQUNqQyxNQUFNQyxNQUFNLEdBQUdiLElBQUksQ0FBQ1ksT0FBTyxDQUFDLEdBQUcsQ0FBQztFQUNoQyxJQUFJRCxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUlFLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNqQyxNQUFNLElBQUluQixLQUFLLENBQUNTLEtBQUssQ0FBQ1QsS0FBSyxDQUFDUyxLQUFLLENBQUNDLGdCQUFnQixFQUFFLG1DQUFtQyxDQUFDO0VBQzFGO0VBQ0FKLElBQUksR0FBR0EsSUFBSSxDQUFDYyxTQUFTLENBQUNILE9BQU8sR0FBRyxDQUFDLEVBQUVFLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDOUMsT0FBT0UsSUFBSSxDQUFDQyxLQUFLLENBQUNoQixJQUFJLENBQUM7QUFDekI7QUFFQWlCLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHO0VBQ2ZiLGFBQWE7RUFDYlYsZ0JBQWdCO0VBQ2hCZTtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=