scribe-node
Version:
Scribe java OAuth library port to node.js
49 lines (40 loc) • 2.25 kB
text/coffeescript
scribe = require('./scribe').load(['GoogleApi2'])
get_access_token = () ->\
token = 'ya29.AHES6ZTb58dirhA8Jwhemi5Tgrnt5ZceO-Tz3PLln1v37b-udioB'\
#token = 'ya29.AHES6ZRKq9JpqsOaZx57DGTCnIIjcIF1jNso46iJrJ0U2xyooB0JBg'\
secret = ''\
expires_in = 3600\
token_type = "Bearer"\
refresh_token = "1/H2kMEh2lC7FuvkCEQYJGe0TjWptNeWVKGYfdJ2s0Iv4"\
new scribe.Token token, secret, "", expires_in, token_type, refresh_token
get_refreshed_access_token = (refresh_token) ->\
access_token = get_access_token()\
access_token.updateToken(refresh_token)\
# save token so that new one is used next time\
return access_token
process_analytics_accounts = (response, access_token) ->\
# access token is here to retrieve more data via api\
json = JSON.parse(response.data)\
if not json.error\
for item in json.items\
console.log item.id + " " + item.name\
else\
console.log "\nThere is a problem with feed:"\
console.log response.data
extract_refresh_token = (response) ->\
console.log "\nRefreshed token:"\
token = service.api.getAccessTokenExtractor() response.data\
access_token = get_refreshed_access_token token\
console.log access_token\
# NOTE: there is a potential infinite loop here because we recursively call handle_analytics_accounts_feed\
# but with proper response status and data check recursive threat should be able to get over\
service.signedRequest(access_token, handle_analytics_accounts_feed, analytics_accounts_feed)
handle_analytics_accounts_feed = (response) ->\
console.log "\nListing Google Analytics accounts:"\
if response.statusCode == 401 and !service.api.isFresh response.data\
service.getRefreshToken get_access_token(), extract_refresh_token\
else\
process_analytics_accounts response, get_access_token()
analytics_accounts_feed = 'https://www.googleapis.com/analytics/v3/management/accounts'
service = new scribe.ServiceBuilder().provider(scribe.GoogleApi2).apiKey('1041764243423.apps.googleusercontent.com').apiSecret('4jCbEOep-wjom-3rwh-hAU9G')._scope('https://www.googleapis.com/auth/analytics.readonly')._callback('urn:ietf:wg:oauth:2.0:oob').build()
service.signedRequest(get_access_token(), handle_analytics_accounts_feed, analytics_accounts_feed)