Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

flickr-sdk

Package Overview
Dependencies
Maintainers
3
Versions
44
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

flickr-sdk

The easiest way to talk to the Flickr API with node.js or a web browser

  • 2.0.1
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1.2K
decreased by-33.43%
Maintainers
3
Weekly downloads
 
Created
Source

Flickr JavaScript SDK

Build Status Coverage Status

The easiest way to talk to the Flickr API with node.js or a web browser. Officially supported by the Flickr Front End team.

Currently we cover the 10 most popular API methods (and some others) but we'll be adding support for more all the time.

Install

npm install flickr-sdk

What You Need First

Implementation

Setup

var Flickr = require('flickr-sdk');

var flickr = new Flickr({
	"apiKey":            "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
	"apiSecret":         "xxxxxxxxxxxxxxxx",
	// you can optionally include these values for testing
	// with your own account, but DO NOT use them for authenticating
	// users, see Authentication section below.
	"accessToken":       "xxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxx",
	"accessTokenSecret": "xxxxxxxxxxxxxxxx"
});

Responses

All responses are objects with two properties:

  • body - containing the data requested
  • headers - any meta data returned in the headers from the API

Authentication

The Flickr API uses oauth1 to generate a request token, which can be exchanged for an access token to authenticate your app to access user data.

To generate a request token:

flickrSDK
	.request()
	.authentication()
	// Flickr will redirect to this URL when the user authorizes
	.prepareRequestToken('http://your.domain.com/authed')
	.then(function (data) {
		// data will contain a URL that you can direct your user
		// to so they can authorize your app to access their Flickr data
		// It will also return a token (part of the URL) and
		// a token secret (used to exchange the request token for an access token)
	});

The Flickr API will automatically direct to your authed callback route when the user allows you app access. In the redirect url, there will be a oauth-verifier code and a request token. You must parse these from the querystring and pass them to your next Flickr SDK call to exchange the request token for an access token:

flickrSDK
	.request()
	.authentication()
	.authenticateUser(
		'request-token-in-url-querystring', 'token-secret-from-prepareRequestToken-result', 'oauth-verifier-in-url-querystring'
	)
	.then(function (data) {

		// data contains a longer-lasting access token for the user
	});

Any calls requiring authentication (i.e. accessing private photos) must pass the access token and the token secret to the request method:

flickrSDK
	// make the request with the access token and secret
	.request('access-token', 'token-secret')
	.media('162347595674')
	.get()
	.then(function (responseData) {
		// responseData contains the photo information for the authenticated user
	});

Functions

Media
Uploading media
flickr
.request()
.media()
.post({
	'photo': './path/to/photo.jpg'
})
.then(function (response) {
	// Photo object with links to resources
});

On the server the photo parameter should be a path to a local file. On the client it'll accept a File object from a browser file field.

Fetching media
flickr
.request()
.media('22397283330')
.get()
.then(function (response) {
	// Photo object with links to resources
});
Searching for media
flickr
.request()
.media()
.search("puppies")
.get()
.then(function (response) {
	// An array of media objects matching the search term
});
People
Person's Media
flickr
.request()
.people("40575690@N00") // ID or path alias
.media()
.get()
.then(function (response) {
	// An array of media objects belonging to the person
});
Person's Favorites
flickr
.request()
.people("40575690@N00") // ID or path alias
.favorites()
.media()
.get()
.then(function (response) {
	// An array of media objects this person has faved
});
Person's Albums
flickr
.request()
.people("40575690@N00") // ID or path alias
.albums()
.get()
.then(function (response) {
	// An array of album objects belonging to this person
});
Contexts
flickrSDK
.request()
.media('22397283330') // Photo ID to fetch context for
.context(5) // Number of photos to get either side of this one
.album('72157657634723246') // An album ID
.get()
.then(function (response) {
	// Two arrays of photo objects, one for previous, one for next
});

Other contexts available:

flickr.request().media(*photoID*).context(5).photolist(*photolistHash*)
flickr.request().media(*photoID*).context(5).photosOf(*personID*)
flickr.request().media(*photoID*).context(5).groupPool(*groupID*)
flickr.request().media(*photoID*).context(5).sharedEntity(*guestpassID*, *guestpassOwner*)
flickr.request().media(*photoID*).context(5).gallery(*galleryID*)
flickr.request().media(*photoID*).context(5).photostream()
flickr.request().media(*photoID*).context(5).favorites(*personID*)
Groups
flickr
.request()
.groups('22397283330') // Group ID
.get()
.then(function (response) {
	// Info about a group
});
Group Media
flickr
.request()
.groups('22397283330')
.media()
.get()
.then(function (response) {
	// A bunch of photos in a group
});
Group Discussions
flickr
.request()
.groups('22397283330')
.discussions()
.get()
.then(function (response) {
	// Discussions happening in this group
});
Album Media
flickr
.request()
.albums('22397283330') // Album ID
.media()
.get()
.then(function (response) {
	// Photos in an album
});
flickr
.request()
.galleries('22397283330') // Gallery ID
.media()
.get()
.then(function (response) {
	// Photos in a gallery
});

Handing Over Extra Parameters

Most methods accept a number of parameters to modify the response. Page and per page parameters are a common example. You can pass arbitrary as an object argument into the verb method like this:

flickr
.request()
.people("40575690@N00")
.media()
.get({
	page: 2,
	per_page: 20
})
.then(function (response) {
	// Media items from 21-40
});

Here's a more advanced search example:

flickr
.request()
.media()
.search("puppies")
.get({
	contacts: 'all', // Only media from the calling user's contacts
	media: 'photos' // Only photos, no videos
	sort: 'date-taken-desc' // Ordered by most recently taken photos
})
.then(function (response) {
	// An array of media objects matching the search query including extra params
});

Handling Errors

All API calls return a Promise. To handle an error just a provide a handler like this:

flickr
.request()
.people("🦄") // not a person ID at all
.media()
.get()
.then(function (response) {
	// Success, we'll never get here
}, function (err) {
	// Handle the error
});

Compatibility and Browser Support

  • Latest Chrome
  • Latest Safari
  • Latest Firefox
  • Latest Mobile Safari
  • IE 10+ for sure, maybe 9 too
  • Node 0.10+

License

Code licensed under the MIT license. See LICENSE file for terms.

Keywords

FAQs

Package last updated on 25 Jul 2016

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc