想实现的功能:当前登录用户实现发布新闻源。
代码如下: ClientContext ctx = new ClientContext(newUrl );
ctx.Credentials = CredentialCache.DefaultNetworkCredentials;
SocialDataItem docLink = new SocialDataItem
{
ItemType = SocialDataItemType.Document,
Text = "link to picture",
Uri = docLinkUrl
};
SocialPostCreationData postCreationData = new SocialPostCreationData();
postCreationData.ContentText = "{0}";
postCreationData.ContentItems = new SocialDataItem[1] { docLink };
SocialFeedManager feedManager = new SocialFeedManager(ctx);
feedManager.CreatePost(null, postCreationData);
ctx.ExecuteQuery();
执行出现的错误:
远程服务器返回错误: (401) 未经授权。
解决方法:1。将当前网站集的web.config文件中,<add key="aspnet:AllowAnonymousImpersonation" value="true" />,改为value="false",或者是在代码中提升权限,此时不会出现问题,不管谁登录,执行的结果都是管理员在发贴,而不是当前用户。
2、在上面的代码中,将 ctx.Credentials = CredentialCache.DefaultNetworkCredentials;改为 NetworkCredential cc=new NetworkCredential( "user", "pwd", "domain");
ctx.Credentials = cc;可实现指定的用户发贴。可是不能写死啊,获取不了当前用户的密码。
想问的是:
通过什么方法来实现当前登录用户发贴,即执行代码后,发布者为当前登录的用户。我如何能实现用当前登录的用户来执行上面的代码呢?真是弄不明白了,请各位指点,先谢谢了。
------解决方案--------------------
使用代码 权限提升的方法不行吗?
你测试了吗?
------解决方案--------------------
不提权没有权限发布?
发布了还想不显示提权后的用户显示原用户?
不科学啊
------解决方案--------------------
如果是服务器对象模型,可以提升权限将post item的created by设置为当前登录用户。客户端没试过,应该也有相应的方法。