我有一个 .net 控制台应用程序,我想使用它通过 Instasharp 包装器使用主题标签搜索来拉取 Instagram 帖子。
我广泛使用 C# .net Web 表单,对 MVC 以及如何使用 await 关键字不是很熟悉。下面的代码示例似乎可以运行,但从未提供任何输出。
这一行:
var tagInfo = await tagApi.Get("soccer");
将我返回到调用方法,而不指示检索到的数据。
谁能提供关于我在这里做错了什么的见解?
public static async void GetInstagram(String tag, InstagramConfig config)
{
var instagramPosts = await LoadInstagramPosts(tag, config);
dynamic dyn = JsonConvert.DeserializeObject(instagramPosts.ToString());
foreach (var data in dyn.data)
{
Console.WriteLine("{0} - {1}", data.filter, data.images.standard_resolution.url);
}
}
public static async Task<TagResponse> LoadInstagramPosts(String hashTagTerm, InstagramConfig config)
{
var tagApi = new InstaSharp.Endpoints.Tags(config);
var tagInfo = await tagApi.Get("soccer");
}
第一次评论后编辑的代码解决了我最初的问题。
我觉得我很接近了,但仍然缺少一些东西。请参阅下面的具体问题...
我的代码基于 InstaSharp GitHub ( https://github.com/InstaSharp/InstaSharp ) 的文档。GitHub 的例子是基于一个 MVC 应用程序,我的不是 MVC 项目,而是一个控制台应用程序。
我觉得我很接近,也许其他人会从帮助我解决这个问题中受益。
我的具体问题...... 1)不确定OAuth方法中的'code'参数来自哪里?2) 如何使用 Instagram 执行所需的回调?
var config = new InstaSharp.InstagramConfig(location.InstagramClientId, location.InstagramClientSecret, "http://localhost");
string instagramLoginLink = InstagramLogin(config);
GetInstagram("soccer", config, instagramLoginLink);
public static async void GetInstagram(String tag, InstagramConfig config, string code)
{
OAuthResponse oAuthResponse = await OAuth(code, config);
var instagramPosts = await LoadInstagramPosts(tag, config, oAuthResponse);
if(instagramPosts.Data != null)
{
dynamic dyn = JsonConvert.DeserializeObject(instagramPosts.Data.ToString());
foreach (var data in dyn.data)
{
Console.WriteLine("{0} - {1}", data.filter, data.images.standard_resolution.url);
}
}
}
public static string InstagramLogin(InstagramConfig config)
{
var scopes = new List<OAuth.Scope>();
scopes.Add(InstaSharp.OAuth.Scope.Likes);
scopes.Add(InstaSharp.OAuth.Scope.Comments);
string link = InstaSharp.OAuth.AuthLink(config.OAuthUri + "authorize", config.ClientId, config.RedirectUri, scopes, InstaSharp.OAuth.ResponseType.Code);
return link;
}
public static async Task<OAuthResponse> OAuth(string code, InstagramConfig config)
{
// add this code to the auth object
var auth = new OAuth(config);
// now we have to call back to instagram and include the code they gave us
// along with our client secret
return await auth.RequestToken(code);
}
public static async Task<TagResponse> LoadInstagramPosts(String hashTagTerm, InstagramConfig config, OAuthResponse OAuth)
{
var tagApi = new InstaSharp.Endpoints.Tags(config, OAuth);
return await tagApi.Get("soccer");
}