Какова цель ключа приложения Facebook - PullRequest
0 голосов
/ 11 февраля 2011

При регистрации приложения facebook вы получаете

идентификатор приложения: 123455678 ключ приложения: hkjhkh3434hkklljk Секрет приложения: jkjljlj1233455jk

Для OAuth 2 только идентификатор приложения (он же client_id) и секрет приложения (он жеclient_secret) являются полезными.

Хотите знать, какова цель ключа приложения?Это для какой-то серверной цели?Если да, то какой смысл разоблачать.

1 Ответ

2 голосов
/ 12 февраля 2011

Я просто думаю здесь вслух.

Я предполагаю, что это присутствует только для обратной совместимости, особенно для старой реализации 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 определенно существует для обратной совместимости!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...