Я просто думаю здесь вслух.
Я предполагаю, что это присутствует только для обратной совместимости, особенно для старой реализации Facebook Connect и REST API, где использовался APP_KEY
.
Как вы можете видеть в FB.init
Javascript-SDK:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'YOUR APP ID',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
});
};
(function() {
var e = document.createElement('script');
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
</script>
Они не упоминают apiKey
, который используется с NEW PHP-SDK .
Теперь, если вы перейдете к старому примеру connect-js :
FB.init({ apiKey: '48f06bc570aaf9ed454699ec4fe416df' });
Итак, отладка файла connect.facebook.net/en_US/all.js
(с использованием JSBeautifier ):
FB.provide('', {
init: function (a) {
a = FB.copy(a || {}, {
logging: true,
status: true
});
FB._apiKey = a.appId || a.apiKey;
if (!a.logging && window.location.toString().indexOf('fb_debug=1') < 0) FB._logging = false;
FB.XD.init(a.channelUrl);
if (FB._apiKey) {
FB.Cookie.setEnabled(a.cookie);
a.session = a.session || FB.Cookie.load();
FB.Auth.setSession(a.session, a.session ? 'connected' : 'unknown');
if (a.status) FB.getLoginStatus();
}
if (a.xfbml) window.setTimeout(function () {
if (FB.XFBML) FB.Dom.ready(FB.XFBML.parse);
}, 0);
}
});
Здесь вы видите, что он проверяет наличие apiId
или apiKey
, а затем пытается вызвать график api, а else остальные API:
FB.provide('', {
api: function () {
if (typeof arguments[0] === 'string') {
FB.ApiServer.graph.apply(FB.ApiServer, arguments);
} else FB.ApiServer.rest.apply(FB.ApiServer, arguments);
}
});
А:
graph: function () {
var a = Array.prototype.slice.call(arguments),
f = a.shift(),
d = a.shift(),
c, e, b;
while (d) {
var g = typeof d;
if (g === 'string' && !c) {
c = d.toLowerCase();
} else if (g === 'function' && !b) {
b = d;
} else if (g === 'object' && !e) {
e = d;
} else {
FB.log('Invalid argument passed to FB.api(): ' + d);
return;
}
d = a.shift();
}
c = c || 'get';
e = e || {};
if (f[0] === '/') f = f.substr(1);
if (FB.Array.indexOf(FB.ApiServer.METHODS, c) < 0) {
FB.log('Invalid method passed to FB.api(): ' + c);
return;
}
FB.ApiServer.oauthRequest('graph', f, c, e, b);
},
rest: function (e, a) {
var c = e.method.toLowerCase().replace('.', '_');
if (FB.Auth && c === 'auth_revokeauthorization') {
var d = a;
a = function (f) {
if (f === true) FB.Auth.setSession(null, 'notConnected');
d && d(f);
};
}
e.format = 'json-strings';
e.api_key = FB._apiKey;
var b = FB.ApiServer._readOnlyCalls[c] ? 'api_read' : 'api';
FB.ApiServer.oauthRequest(b, 'restserver.php', 'get', e, a);
},
Как вы можете видеть здесь, он используется с Old Rest API , читая там документацию:
REST API поддерживает OAuth 2.0
так же как и старый, кастом
схема подписи авторизации . Увидеть
руководство по обновлению аутентификации для
информация о том, как обновить ваш
существующие сеансы до OAuth 2.0.
Так что APP_KEY
определенно существует для обратной совместимости!