簡體   English   中英

Meteor如何訪問服務器和客戶端的Facebook Graph Api

[英]Meteor how to get access to Facebook Graph Api for both Server and Client side

accounts-facebook包僅提供logIn和logOut功能。

meteor-fbgraph可以訪問服務器端的fbgraph。

facebook-sdk可以在客戶端訪問fbgraph。

問題是facebook-sdk不使用Accounts-ui提供的任何東西,例如Accounts.onLogin事件或Accounts.ui.config 在用戶登錄后單擊{{> loginButtons}}時,只有Meteor.user()注銷, facebook-sdk仍然擁有它的AccessToken並保持登錄狀態。結果一半的應用程序仍然登錄(客戶端)和半登出(服務器)。

這是我的帳戶與FB事件配對的解決方法,但我認為這不是一個合適的解決方案。

Accounts.onLogin(function(){
  FB.login();
  AccountsOnLogout(function(){
    FB.logout();
  });
});

function AccountsOnLogout(callback){
  var waitForLogout = setInterval(function() {
    if (!(Meteor.user())) {
      console.log("logged out");
      callback();
      clearInterval(waitForLogout);
    }
  }, 1000);
}

你有更好的想法如何在客戶端獲得fbGraph嗎?

我只為你使用“有點解決方法”,因為無論如何我都會在服務器上操作和緩存響應數據。 所以我只是調用方法並使用該服務器端。

Facebook = (accessToken) ->
  @fb = Meteor.npmRequire 'fbgraph'
  @accessToken = accessToken
  @fb.setAccessToken @accessToken
  @options =
    timeout: 3000
    pool:
      maxSockets: Infinity
    headers:
      connection: "keep-alive"
  @fb.setOptions @options


FBQuery = (query, method, fbObject) ->
  if typeof method is 'undefined' then method = 'get'
  console.log "query is: " + query
  data = Meteor.sync((done) ->
    fbObject[method](query, (err, res) ->
      done(null, res)
    )
  )
  data.result


Meteor.methods(
  getUserData: ->
    fb = new Facebook(Meteor.user().services.facebook.accessToken)
    FBQuery '/me', 'get', fb

  getUserEvents: ->
    fb = new Facebook(Meteor.user().services.facebook.accessToken)
    FBQuery '/' + Meteor.user().services.facebook.id + '/events', 'get', fb

  getUserGroups: ->
    fb = new Facebook(Meteor.user().services.facebook.accessToken)
    FBQuery '/' + Meteor.user().services.facebook.id + '/groups?fields=name&limit=1000', 'get', fb
)

和客戶端

Template.home.events(
  'click #btn-user-data': (e) ->
    Meteor.call('getUserData', (err, data) ->
      $('#result').text(JSON.stringify(data, undefined, 4))
    )
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM