league/oauth2-instagram
Instagram OAuth 2.0 provider for the League OAuth2 Client. Adds Instagram authorization and token handling to PHP applications so you can authenticate users and access Instagram APIs with minimal setup.
api.instagram.com/v1 endpoints.league/oauth2-client, but the new custom Graph host configuration makes the "standardize on the League ecosystem" option slightly more attractive: a single abstraction can now be pointed at different Graph hosts (Google/Facebook/Instagram, or a version-pinned or proxied host) instead of forking per provider. The real decision remains "do we adopt League as our standard social-auth abstraction?" — not "Instagram, yes/no."['user_profile'], and removes the getName() / getImageUrl() / getDescription() shorthands, so the resource-owner payload we can persist and join on is now narrower and must be re-specified in the data model.SocialIdentityProvider interface, route the Graph host through configuration, and swap to a first-party or business-account adapter later without changing the interface.Consider it when:
league/oauth2-client; adding a provider is a one-line wiring change versus adopting a second auth library.Look elsewhere when:
api.instagram.com/v1 support and the getImageUrl() / getName() / getDescription() helpers are gone, and default scopes changed to ['user_profile']. Upgrading means re-testing every call site and re-checking your Meta app review scope justification.Bottom line: 3.0.0 is a genuine, overdue modernisation and it removes the "stale legacy endpoints" objection — but it re-bases the package onto a deprecated Instagram surface. Keep treating it as a reference implementation and spike tool, not a production dependency.
To executives: The picture improves slightly but the recommendation stands. A new 3.0.0 release modernised the adapter — it now targets Instagram Basic Display instead of the retired legacy API, and it adds a configuration point that lets us control which Graph host we talk to. That is real progress on a package that hadn't shipped in years, and it makes the "cheap experiment" framing more credible. The caveats are unchanged in substance: one release does not make this a supported vendor, and it lands us on a Meta API that is itself being wound down in favour of the business/creator login flow. Recommendation: fund the two-week spike, but re-scope it — the question is no longer "do these endpoints work?" but "which Instagram APIs are we actually permitted to use, and do we need business accounts?" Budget a small ongoing maintenance line (or a fork) if the channel proves out. Do not put it on the critical path of a committed launch.
To engineering: 3.0.0 is a breaking major — legacy API support and three InstagramResourceOwner shorthands are removed, default scopes narrowed to ['user_profile'], and Graph host is now configurable. If any spike code sits on 2.x, budget a re-validation pass; the removals will surface as fatal errors, not warnings. The host-config addition is the useful part: it gives us a clean seam for version pinning or an egress proxy and lets one League abstraction serve multiple Graph providers without a fork. It is still a thin AbstractProvider subclass, still single-maintainer with zero dependents, still ours to own. Wrap it behind our interface, pin the exact version, and verify Basic Display's sunset timeline against current Meta docs before we commit the roadmap item — that verification, not the code, is now the gating cost.
Decision requested: approve the spike and the interface abstraction; approve the 3.0.0 pin as the spike baseline; defer the production-adoption decision until the spike confirms which Instagram API surface is viable and we have a named maintenance owner.
How can I help you explore Laravel packages today?