在MVC 5网站上,我希望访客只有在Facebook或Twitter上分享后才能阅读完整版的帖子。
我在一些网站上看过这个例子......最好的方法是什么?
这里没有真正的安全问题......这只是宣传这个词的一种方式......
我的第一个想法是使用帖子KEY(Guid)保存一个cookie ...用户看不到这个键,所以他不会知道这个值。
问题是我如何知道他分享了网址...如何获得确认?
谢谢,
米格尔
答案 0 :(得分:0)
FB.ui(
{
method: 'feed',
name: 'Facebook Dialogs',
link: 'https://developers.facebook.com/docs/dialogs/',
picture: 'http://fbrell.com/f8.jpg',
caption: 'Reference Documentation',
description: 'Dialogs provide a simple, consistent interface for applications to interface with users.'
},
function(response) {
if (response && response.post_id) {
alert('Post was shared.'); //give access to article
} else {
alert('Post was not shared.'); //they chose not share... don't give access
}
});
我在.NET项目中几乎逐字地实现了这个代码(只用我自己的功能替换了alerts
)如果他们共享了竞赛页面,我给了用户两个参赛作品(如果他们分享了一个参赛作品,那么没有分享或什么也没做。)
至于Twitter,我个人没有实现类似的东西,但你最好的选择可能是JavaScript Interfaces for Twitter for Websites。
答案 1 :(得分:0)
我不知道Facebook,但推特转发与分享相同。状态/转推/ ids应该有效。如果您有推文的ID,那么您可以列出转发该推文的人员列表,根据需要进行更新以获取新ID。
https://dev.twitter.com/docs/api/1.1/get/statuses/retweeters/ids
如果您不想编写所有代码以进行身份验证和配置端点,则可以使用第三方库。以下是我的图书馆LINQ to Twitter v3.0 Beta的一个例子:
ulong tweetID = 210591841312190464;
var status =
await
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.Retweeters &&
tweet.ID == tweetID
select tweet)
.SingleOrDefaultAsync();
if (status != null && status.User != null)
status.Users.ForEach(
userID => Console.WriteLine("User ID: " + userID));
顺便说一下,还有Facebook SDK for .NET。