我正在将社交媒体集成扩展到应用程序。
找到此post但没有合适的答案。
简而言之:
将照片发布到用户1的墙上(登录后)。
“分享”用户2的帖子(登录后)。
我需要能够登录并将照片上传到我当前登录的帐户。(我已经实现了这一点)。
我认为这是所需的逻辑:
检索post_id并将其分享/发布到其他用户时间轴上... 我已经完成了所有工作,包括检索post_id。 现在我陷入困境,似乎无法找到解决办法,也许这只是一个漫长的一周......
这是一个Windows窗体应用程序(不判断 - 不是我的电话),我使用此代码生成登录:
public static string GenerateLoginUrl()
{
dynamic parameters = new ExpandoObject();
parameters.client_id = ""; //app id
parameters.redirect_uri = "https://www.google.com";
parameters.response_type = "token";
parameters.display = "popup";
var fb = new FacebookClient();
Uri loginUri = fb.GetLoginUrl(parameters);
return loginUri.AbsoluteUri;
}
然后我使用以下方法导航到上述URL后验证:
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
if (webBrowser1.Visible)
{
var fb = new FacebookClient();
FacebookOAuthResult oauthResult;
if (fb.TryParseOAuthCallbackUrl(e.Url, out oauthResult))
{
if (oauthResult.IsSuccess)
{
//happy
}
}
}
}
我在FacebookClient类实例的“PostCompleted”方法上检索post_id,如下所示:
fb.PostCompleted += (oo, eee) =>
{
if (eee.Cancelled || eee.Error != null)
{
return;
}
var result = eee.GetResultData();
JsonObject myObj = (JsonObject)result;
string post_id = myObj["post_id"].ToString();
};
我已经设法做了所有的小点点,但现在我坚持把它们放在一起,谢谢你提前,任何信息和有用的链接都会很棒。
答案 0 :(得分:1)
最后让它努力满足我的要求......
注意:此答案假设您了解使用C#Facebook API进行身份验证和发布的基础知识:
fb.PostCompleted += (o, ee) =>
{
if (ee.Cancelled || ee.Error != null)
return;
JsonObject myObj = (JsonObject)ee.GetResultData();
string href = String.Format("https://www.facebook.com/photo.php?fbid={0}&set=a.{1}", myObj["id"].ToString(), myObj["post_id"].ToString());
this.Invoke(new MethodInvoker(delegate()
{
ClientLogin loginDialog = new ClientLogin(href);
loginDialog.Show();
}));
};
fb.PostTaskAsync(parameters);
任务完成后,我打开一个包含“WebBrowser”控件的表单 我在哪里调用以下代码:
webBrowserOAuth.Navigate(String.Format(@"https://www.facebook.com/dialog/feed?app_id={0}&href={1}&redirect_uri={2}", app_id, _href, redirect_uri));
然后处理"webBrowserOAuth_Navigated"
事件以满足您的要求......