2013-07-18 1 views
1

fb 플러그인에 cordova- 2.5.0 & facebook-sdk 3.0.2를 사용했습니다. 기본 응용 프로그램이 설치되어 있지 않은 경우 잘 작동합니다. 네이티브 애플 리케이션이 설치되면 아무 일도 일어나지 않는다. 사용자의 현재 액세스 토큰을 얻을 수 없다. 내게 따르면 두 가지 방법이 있습니다 : 과 같이 네이티브 응용 프로그램에 액세스 할 수 없도록 설정하려면 두 가지 방법이 있습니다 :Phonegap facebook plugin : 기본 FB 응용 프로그램이 설치된 경우 작동하지 않습니다.

하지만 사용자가 이미 네이티브로 로그인 한 것처럼 플러그인을 다시 로그인해야합니다.

2)이 문제를 해결하는 방법을 잘 모릅니다. 해시 키는 문제가 없으며 첫 번째 방법을 사용하여 올바르게 작동합니다.

그럼 내 질문은 네이티브 앱에 액세스하는 것을 방지하는 방법입니까? 또는이 문제를 해결할 다른 방법이 있습니까?

나는 아무것도 얻지 못합니다. 사용자의 친구 목록을 얻으려고 할 때 현재 사용자에 대한 정보를 쿼리하려면 활성 액세스 토큰을 사용해야합니다., "type": "OAuthException", "code": 2500.

CDV-pluggin-FB-connect.js 미리

CDV = (typeof CDV == 'undefined' ? {} : CDV); 
var cordova = window.cordova || window.Cordova; 
CDV.FB = { 
    init: function(apiKey, fail) { 
    // create the fb-root element if it doesn't exist 
    if (!document.getElementById('fb-root')) { 
     var elem = document.createElement('div'); 
     elem.id = 'fb-root'; 
     document.body.appendChild(elem); 
    } 
    cordova.exec(function() { 
    var authResponse = JSON.parse(localStorage.getItem('cdv_fb_session') || '{"expiresIn":0}'); 
    if (authResponse && authResponse.expirationTime) { 
     var nowTime = (new Date()).getTime(); 
     if (authResponse.expirationTime > nowTime) { 
     // Update expires in information 
     updatedExpiresIn = Math.floor((authResponse.expirationTime - nowTime)/1000); 
     authResponse.expiresIn = updatedExpiresIn; 

     localStorage.setItem('cdv_fb_session', JSON.stringify(authResponse)); 
     FB.Auth.setAuthResponse(authResponse, 'connected'); 
     } 
     } 
     console.log('Cordova Facebook Connect plugin initialized successfully.'); 
    }, (fail?fail:null), 'org.apache.cordova.facebook.Connect', 'init', [apiKey]); 
    }, 
    login: function(params, cb, fail) { 
    params = params || { scope: '' }; 
    cordova.exec(function(e) { // login 
     if (e.authResponse && e.authResponse.expiresIn) { 
      var expirationTime = e.authResponse.expiresIn === 0 
      ? 0 
      : (new Date()).getTime() + e.authResponse.expiresIn * 1000; 
      e.authResponse.expirationTime = expirationTime; 
     } 
     localStorage.setItem('cdv_fb_session', JSON.stringify(e.authResponse)); 
     FB.Auth.setAuthResponse(e.authResponse, 'connected'); 
     if (cb) cb(e); 
    }, (fail?fail:null), 'org.apache.cordova.facebook.Connect', 'login', params.scope.split(',')); 
    }, 
    logout: function(cb, fail) { 
    cordova.exec(function(e) { 
     localStorage.removeItem('cdv_fb_session'); 
     FB.Auth.setAuthResponse(null, 'notConnected'); 
     if (cb) cb(e); 
    }, (fail?fail:null), 'org.apache.cordova.facebook.Connect', 'logout', []); 
    }, 
    getLoginStatus: function(cb, fail) { 
    cordova.exec(function(e) { 
     if (cb) cb(e); 
    }, (fail?fail:null), 'org.apache.cordova.facebook.Connect', 'getLoginStatus', []); 
    }, 
    dialog: function(params, cb, fail) { 
    cordova.exec(function(e) { // login 
     if (cb) cb(e); 
        }, (fail?fail:null), 'org.apache.cordova.facebook.Connect', 'showDialog', [params]); 
    } 
}; 

감사합니다!

답변

관련 문제