我已经看过这个问题了。但这使用了旧的 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();
}
});
此代码位于登录页面 (/) 中。这完美地工作并且警报功能正确显示名称。在此之后,我希望它与我需要为其提供 JSON Prefetch URL 的 Typeahead JS 一起使用。当我尝试使用与位于另一个页面 /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 变量以仅获取朋友的姓名,并将 JSON 对象用作Typeahead中的“本地”参数,如下所示:
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 中使用它或以任何其他方式实现它?