基本上,我想显示一个朋友列表(带有图片和姓名)并邀请他们加入我正在使用fb_graph
gem 在 rails 中创建的应用程序。该链接显示了它的工作流程,基本上您将单击“邀请朋友”按钮,然后会弹出一个朋友列表,其中包含一个允许您邀请相应用户的按钮。
http://www.quora.com/User-Acquisition/What-is-the-best-invite-a-friend-flow-for-mobile
有没有办法做到这一点fb_graph
?
基本上,我想显示一个朋友列表(带有图片和姓名)并邀请他们加入我正在使用fb_graph
gem 在 rails 中创建的应用程序。该链接显示了它的工作流程,基本上您将单击“邀请朋友”按钮,然后会弹出一个朋友列表,其中包含一个允许您邀请相应用户的按钮。
http://www.quora.com/User-Acquisition/What-is-the-best-invite-a-friend-flow-for-mobile
有没有办法做到这一点fb_graph
?
你打赌。假设您有 fb_graph 的有效实现,您可以使用以下命令(来自https://github.com/nov/fb_graph)获取朋友列表:
FbGraph::User.me(fb_token).friends
您可以使用它为您的朋友列表生成您的 UI,然后邀请选定的朋友,就像这样(来自上一个链接的未经测试的修改,以及https://developers.facebook.com/docs/reference/dialogs/requests/ ):
app_request = FbGraph::User.me(token).app_request!(
:message => 'invitation message',
:to => friend.uid
)
前面的代码也可以接受以逗号分隔的 UID 集合。
我将留给您设计和编写 UI 代码,但使用 fb_graph 是可能的,这是肯定的。如果您决定扩大范围,这两个链接应该是纯金的。
感谢您对我的宝石的关注。
Brad Werth 的代码适用于现有(= 已安装您的应用程序)用户,但可能不适用于新用户。
在后台发送应用程序请求以避免垃圾邮件有很多限制。该限制直接影响 fb_graph 的发送应用请求功能。
如果您正在开发 iOS 应用程序,我建议您使用 FB 官方 iOS SDK。 https://developers.facebook.com/docs/howtos/send-requests-using-ios-sdk/
使用 iOS SDK(或 html5 应用程序中的 JS SDK),您的限制更少。
附言。我不熟悉 Android App 开发也不熟悉 FB 官方 Android SDK,但我认为他们的 Android SDK 中也有类似的功能。
这可能会有所帮助,我在我的 PHP 服务器上使用它并且它有效。
此代码可帮助您发布、发送消息以及向您的朋友发送请求。
头标:
<script type="text/javascript">
function logResponse(response) {
if (console && console.log) {
console.log('The response was', response);
}
}
$(function(){
// Set up so we handle click on the buttons
$('#postToWall').click(function() {
FB.ui(
{
method : 'feed',
link : $(this).attr('data-url')
},
function (response) {
// If response is null the user canceled the dialog
if (response != null) {
logResponse(response);
}
}
);
});
$('#sendToFriends').click(function() {
FB.ui(
{
method : 'send',
link : $(this).attr('data-url')
},
function (response) {
// If response is null the user canceled the dialog
if (response != null) {
logResponse(response);
}
}
);
});
$('#sendRequest').click(function() {
FB.ui(
{
method : 'apprequests',
message : $(this).attr('data-message')
},
function (response) {
// If response is null the user canceled the dialog
if (response != null) {
logResponse(response);
}
}
);
});
});
</script>
身体标签:
<body>
<div id="fb-root"></div>
<script type="text/javascript">
window.fbAsyncInit = function() {
FB.init({
appId : 'xxxxxxxxxxxxxxxxxxx', // App ID
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
// Listen to the auth.login which will be called when the user logs in
// using the Login button
FB.Event.subscribe('auth.login', function(response) {
// We want to reload the page now so PHP can read the cookie that the
// Javascript SDK sat. But we don't want to use
// window.location.reload() because if this is in a canvas there was a
// post made to this page and a reload will trigger a message to the
// user asking if they want to send data again.
window.location = window.location;
});
FB.Canvas.setAutoGrow();
};
// Load the SDK Asynchronously
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<header class="clearfix">
<?php if (isset($basic)) { ?>
<p id="picture" style="background-image: url(https://graph.facebook.com/<?php echo he($user_id); ?>/picture?type=normal)"></p>
<div>
<h1>Welcome, <strong><?php echo he(idx($basic, 'name')); ?></strong></h1>
<p class="tagline">
This is your app
<a href="<?php echo he(idx($app_info, 'link'));?>" target="_top"><?php echo he($app_name); ?></a>
</p>
<div id="share-app">
<p>Share your app:</p>
<ul>
<li>
<a href="#" class="facebook-button" id="postToWall" data-url="<?php echo AppInfo::getUrl(); ?>">
<span class="plus">Post to Wall</span>
</a>
</li>
<li>
<a href="#" class="facebook-button speech-bubble" id="sendToFriends" data-url="<?php echo AppInfo::getUrl(); ?>">
<span class="speech-bubble">Send Message</span>
</a>
</li>
<li>
<a href="#" class="facebook-button apprequests" id="sendRequest" data-message="Test this awesome app">
<span class="apprequests">Send Requests</span>
</a>
</li>
</ul>
</div>
</div>
<?php } else { ?>
<div>
<h1>Welcome</h1>
<div class="fb-login-button" data-scope="user_likes,user_photos"></div>
</div>
<?php } ?>
</header>
当然,Facebook 提供了一个漂亮的对话框来选择您想要向其发送请求的朋友。但也有一个不错的工具,内置在 javascript 中,通过它您可以拥有相同类型的 Facebook 好友选择器对话框。
该插件将对 Facebook 进行 Graph API 调用并收集您的朋友列表。这个插件的优点是它会以“懒加载模式”加载所有好友列表。