我正在开发一个网络应用程序,其中一些内容以文本形式生成(并且很快也将包括图像)。我想添加一个分享按钮,允许用户将此内容添加到他们的 Instagram 故事中。
所以流程将是:
- 用户在网站上执行某些操作
- 网站根据用户输入生成一些内容
- 用户点击“在 Instagram 上分享”并将其发布到他/她的故事中
有没有办法使用 Javascript 或 API 调用(例如直接从 HTML 调用 Twitter 共享选项)来执行此操作?
我在后端(Flask)使用Python,在前端使用JS
好吧,让这个变得简单。
在 Facebook 官方开发者页面上找到的直接答案是否定的。您无法触发 API 来创建 Instagram 故事,因为目前 API 仅支持“阅读模式”。
但就像生活中的大多数事情一样,你可以想办法解决。
您可以创建一个按钮,上面写着“在您的 Instagram 故事上分享”,它的作用如下:
更新
- 通过以下链接触发 Instagram 应用程序中打开的故事相机:instagram://story-camera。 (他们最后拥有的内容将是您发送的内容,并且将是他们发布故事时看到的第一件事)
第三点有更好的解决方案:
不用说,当网站在手机中打开时,这将起作用,而不是在桌面浏览器中,因为在桌面上你无法发布故事。
《纽约时报》已经这么做了。
在 iOS 中,它会生成一个 Instagram 故事,其中包含相应新闻文章的标题和标题。
为此,您需要按 iPhone 上的“分享”按钮,然后按“Instagram Stories”。
通过《纽约时报》iOS 应用程序自动生成 Instagram 故事
Twitter 也做了这个很长一段时间了。
Instagram 最近发布了一项新功能,可在移动设备上启用此功能。请查看这篇文章了解详情。
快速总结,您可以使用
navigator.share
API 直接从网络共享图像到 Instagram,直接在 Instagram 中打开包含图像的帖子、故事或消息。
函数 InstagramShare($url = null){
// Redirect User to Instagram for Authentication
if (!isset($_GET['code'])) {
$authUrl = $this->getInstagramAuthUrl();
return $this->redirect($authUrl);
}
// Handle the Redirect and Exchange Code for Access Token
$code = $_GET['code'];
$accessTokenData = $this->getAccessToken($code);
if (isset($accessTokenData['access_token'])) {
$shortLivedToken = $accessTokenData['access_token'];
$longLivedTokenData = $this->getLongLivedToken($shortLivedToken);
if (isset($longLivedTokenData['access_token'])) {
$longLivedToken = $longLivedTokenData['access_token'];
$this->shareStory($longLivedToken, $url);
} else {
throw new \Exception('Failed to exchange short-lived token for long-lived token.');
}
}
否则{
throw new \Exception('Failed to retrieve access token.');
}
}