如何在不登录的情况下从Instagram获得oauth 2访问令牌(隐含流)

本文关键字:访问令牌 oauth 获得 Instagram 登录 情况下 | 更新日期: 2023-09-27 18:05:20

我想在网站和应用程序上显示各种Instagram用户的提要。内容是公开的。我计划使用Instagram api端点来检索数据。要访问Instagram api,我需要一个访问令牌。但是我无法通过API调用获得有效的访问令牌。我想使用oauth 2隐式流(客户端凭证),因为交互是沉默的,不应该涉及手动授权(用户不必授权访问)。下面的c#代码给了我一个"BAD REQUEST"响应。客户端id, secret和重定向url已在Instagram客户端配置中设置。

string instagramClientId = "1111111111111111111111111111111";
string instagramClientSecret = "2222222222222222222222222222222";
string instagramTokenUrl = "https://api.instagram.com/oauth/access_token";
string instagramRedirectUrl = "http://socialmedia.local/api/posts/instagram";
string instagramAccessToken = "";
using (var client = new HttpClient())
{
    client.BaseAddress = new Uri(instagramTokenUrl);
    client.DefaultRequestHeaders.Accept.Clear();
    var content = new FormUrlEncodedContent(new[] 
    {
        new KeyValuePair<string, string>("client_id", instagramClientId),
        new KeyValuePair<string, string>("client_secret", instagramClientSecret),
        new KeyValuePair<string, string>("grant_type", "authorization_code"),
        new KeyValuePair<string, string>("redirect_uri", instagramRedirectUrl),
        new KeyValuePair<string, string>("code", "CODE")
    });
    HttpResponseMessage response = await client.PostAsync("", content);
    if (response.IsSuccessStatusCode)
    {
        var result = response.Content.ReadAsStringAsync().Result;
        if (result.IndexOf("access_token") >= 0)
        {
            instagramAccessToken = result.Substring(result.IndexOf("=") + 1);
        }
    }
}

如何在不登录的情况下从Instagram获得oauth 2访问令牌(隐含流)

如果您正在进行未经授权的请求(即没有用户访问令牌),则不需要oauth2隐式流。你可以用client_id:{applications client id}替换access_token:{users access token}

注意,您只能对某些端点执行此操作。例如,您无法获得用户提要(来自他们关注的人的最新帖子),因为这是用户的私有内容,需要访问令牌。您可以使用

获取用户的最新帖子
https://api.instagram.com/v1/users/{user_id}/media/recent/?client_id={app client_id}