gpt4 book ai didi

c# - 请求 access_token Instagram

转载 作者:行者123 更新时间:2023-11-30 12:45:21 30 4
gpt4 key购买 nike

我遇到了以下问题:

我正在尝试将 Instagram 应用到我的网站中。但是,我停留在需要获取访问 token 的步骤上。 api 的文档说我需要像这样请求它:

curl \-F 'client_id=CLIENT-ID' \
-F 'client_secret=CLIENT-SECRET' \
-F 'grant_type=authorization_code' \
-F 'redirect_uri=YOUR-REDIRECT-URI' \
-F 'code=CODE' \https://api.instagram.com/oauth/access_token

我使用 ASP.NET,所以我找到了这个等价物 OAuth 2.0 In .NET With Instagram API :

NameValueCollection parameters = new NameValueCollection();
parameters.Add("client_id", "ssdfsdfsdfsdfsdf");
parameters.Add("client_secret", "sdsdfdsfsdfsdfsdfsdfsdf");
parameters.Add("grant_type", "authorization_code");
parameters.Add("redirect_uri", "http://localhost:2422/LoginsGuests/GetLoginPage");
parameters.Add("code", code);

WebClient client = new WebClient();
var result = client.UploadValues("https://api.instagram.com/oauth/access_token", parameters);

var response = System.Text.Encoding.Default.GetString(result);

但是我不断得到: System.Net.WebException:远程服务器返回错误:(400) 错误请求。

我做错了什么?

最佳答案

instagram api 几乎需要 POST 而不是 GET。

添加“POST”参数。

var result = client.UploadValues("https://api.instagram.com/oauth/access_token ", "POST", 参数);

同时检查 instagram 设置 -> 重定向 url。

那么这可能有助于不要忘记添加对 Newtonsoft.Json 的引用。在 .Net 版本 4.5.1 中:

using System;
using System.Collections.Specialized;
using System.Net;
using System.Text;

namespace Instagram
{
public class InstagramClient
{
public InstagramClient(string code)
{
GetToken(code);
}

private void GetToken(string code)
{
using (var wb = new WebClient())
{
var parameters = new NameValueCollection
{
{"client_id", "ClientId"},
{"client_secret", "ClientSecret"},
{"grant_type", "authorization_code"},
{"redirect_uri", "RedirectUri"},
{"code", code}
};

var response = wb.UploadValues("https://api.instagram.com/oauth/access_token", "POST", parameters);
string json = Encoding.ASCII.GetString(response);

try
{
var OauthResponse = (InstagramOAuthResponse) Newtonsoft.Json.JsonConvert.DeserializeObject(json, typeof(InstagramOAuthResponse));
}
catch (Exception ex)
{
//handle ex if needed.
}
}
}

public class InstagramOAuthResponse
{
public string access_token { get; set; }
public User user { get; set; }
}

public class User : System.Security.Principal.IIdentity
{
public string username { get; set; }
public string website { get; set; }
public string profile_picture { get; set; }
public string full_name { get; set; }
public string bio { get; set; }
public string id { get; set; }

public string OAuthToken { get; set; }

public string AuthenticationType
{
get { return "Instagram"; }
}

public bool IsAuthenticated
{
get { return !string.IsNullOrEmpty(id); }
}

public string Name
{
get
{
return String.IsNullOrEmpty(full_name) ? "unknown" : full_name;
}
}
}
}
}

关于c# - 请求 access_token Instagram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094609/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com