如何为Facebook好友搜索实现Typeahead JS
How to implement Typeahead JS for Facebook Friends Search?
我已经看到了这个问题。但这使用旧的Bootstrap Typeahead,我现在正在尝试使用Typeahead JS自动完成Facebook好友。好吧,我想做的是从Facebook获取朋友列表并使用它来填写输入文本字段。我正在使用以下代码行获取Facebook好友列表。
FB.login(function(response) {
if (response.authResponse) {
var uid = response.authResponse.userID;
access_token = response.authResponse.accessToken;
//alert('login success');
$.getJSON("https://graph.facebook.com/me/friends?access_token=" + access_token, function(result) {
var friends_list = result;
alert(friends_list.data[0].name);
});
} else {
//alert('not logged in');
location.reload();
}
});
此代码位于登录页面 (/) 中。这非常有效,警报功能可以正确显示名称。在此之后,我希望它与Typeahead JS一起使用,我需要为此提供JSON预取URL。当我尝试在另一个页面/login/landing中与Typeahead JS使用相同的URL时,控制台显示403错误。
我尝试在Typeahead JS中使用它,如下所示:
$(document).ready(function() {
$('.example-countries .typeahead').typeahead({
name: 'jsonvar_string',
prefetch: "'https://graph.facebook.com/me/friends?access_token='+access_token",
template: ['<p class="repo-language">{{data{{name}}}}</p>', '<p class="repo-name">{{data{{id}}}}</p>'].join(''),
engine: Hogan
});
});
它没有用。因此,我尝试解析 Javascript 变量以仅获取朋友的名字,并在 Typeahead 中使用 JSON 对象作为"local"参数,如下所示:
FB.login(function(response) {
if (response.authResponse) {
//alert('Hi there');
var uid = response.authResponse.userID;
access_token = response.authResponse.accessToken;
alert('login success');
$.getJSON("https://graph.facebook.com/me/friends?access_token=" + access_token, function(result) {
var friends_list = result;
var friends_list_length = Object.keys(friends_list.data).length;
var jsonvar = [];
for (var i = 0; i < friends_list_length; i++) {
jsonvar.push(friends_list.data[i].name);
}
jsonvar_string = JSON.stringify(jsonvar);
localStorage.jsonvalue = jsonvar_string;
window.location.href = "/login/landing";
});
} else {
alert('not logged in');
location.reload();
}
});
即使这样也行不通。我的Facebook的API调用返回如下JSON:
{
"data": [
{
"name": "ABCD",
"id": "1234455"
},
{
"name": "PQRSTV",
"id": "789456"
},
{
"name": "LKJHMN",
"id": "456789"
}
],
"paging": {
"next": "https://graph.facebook.com/12343434/friends?access_token=CAAJVBDOfUeQBAadfASDFdfdkdERdfdg8pVgJCMbSwIkWyQ0tIjNwoPPIjni7JeMyMbkeTNmxsKRiUe3q0h74Ngl3Ylue2Oz0XlepxUgZBoASpkSted2WV414ziawNZAHW68vLgCArRyxC8vNPeVmoZAueqnL1COrdSvkSItkVXbYVbueUZAhyBwZDZD&limit=5000&offset=5000&__after_id=100006343431073"
}
}
无论如何,解析我收到的JSON以直接在Typeahead JS中使用它或任何其他实现它的方式?
您必须将name
键转换为value
ou tokens
。Typeahead.js只是识别自动完成这些键中写入的内容。
我在推特API上遇到了同样的问题。 它可能会有所帮助:如何将TypeAhead.js与Twitter API集成
相关文章:
- 如何使用动画实现纸张推车
- 客户端服务器REST API captcha实现
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 如何实现此布局
- Meteor忘记了密码的实现
- 使用Native Sockets在Android中实现WebSockets
- 在样板文件中实现Ajax
- Twitter引导程序Typeahead-Id&标签
- 对具有ui typeahead的对象中的值执行orderBy
- instanceof是如何在JavaScript中实现的
- 如何正确实现Jquery多选小部件
- 实现一个建立在google.com之上的自定义搜索引擎
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- 多个组件是如何实现的
- window.location使用jquery mobile实现chrome跳转
- 如何在OpenERP中实现网络摄像头
- 如何让typeahead在我的搜索栏中填充自定义参数
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- 如何为Facebook好友搜索实现Typeahead JS
- 从angular js中调用jquery实现typeahead时的问题