0

我正在使用phonegap、adobe build 和facebook 使用这段代码进行身份验证。

我希望通过某种形式的回调来处理“成功”登录,并在用户的墙上发帖。

       <script type="text/javascript">
       var my_client_id = "133914256793487", // YOUR APP ID
    my_secret = "862f10f883f8d91617b77b4b143abc8d", // YOUR APP SECRET 
    my_redirect_uri = "https://www.facebook.com/connect/login_success.html", // LEAVE THIS
    my_type ="user_agent", my_display = "touch"; // LEAVE THIS

var facebook_token = "fbToken"; // OUR TOKEN KEEPER
var ref; //IN APP BROWSER REFERENCE

// FACEBOOK
var Facebook = {
    init:function(){
         // Begin Authorization
         alert("we have begun");
         var authorize_url = "https://www.facebook.com/dialog/oauth?";
         authorize_url += "client_id=" + my_client_id;
         authorize_url += "&redirect_uri=" + my_redirect_uri;
         authorize_url += "&display=" + my_display;
         authorize_url += "&scope=publish_stream";

             //CALL IN APP BROWSER WITH THE LINK
         ref = window.open(authorize_url, '_blank', 'location=no');

         ref.addEventListener('loadstart', function(event){

             Facebook.facebookLocChanged(event.url);

          });
         } , 
    facebookLocChanged:function(loc){
        if (loc.indexOf("https://www.facebook.com/connect/login_success.html") >= 0 ) {

            //CLOSE INAPPBROWSER AND NAVIGATE TO INDEX
            ref.close();

            //THIS IS MEANT TO BE DONE ON SERVER SIDE TO PROTECT CLIENT SECRET
            var codeUrl = 'https://graph.facebook.com/oauth/access_token?client_id='+my_client_id+'&client_secret='+my_secret+'&redirect_uri='+my_redirect_uri+'&code='+loc.split("=")[1];
            console.log('CODE_URL::' + codeUrl);
            $.ajax({
                url: codeUrl,
                data: {},
                type: 'POST',
                async: false,
                cache: false,
                success: function(data, status){
                    //WE STORE THE TOKEN HERE
                    localStorage.setItem(facebook_token, data.split('=')[1].split('&')[0]);
                    },
                error: function(){
                    alert("Unknown error Occured");
                }
            }); 
        }
    }
     }  
       </script>
        <script type="text/javascript">
           Facebook.init();
            </script>

任何人都可以建议如何适当地扩展这个例子 - 我可以在哪里找到能够帮助自己的 API?目前,它成功地要求用户登录 - facebook 弹出 - 我成功接受,然后返回 Success - 并显示一条红色消息,说明用户应安全地保留此 URL。

干杯,

安迪

4

1 回答 1

0

我知道更改代码的整个结构是一项艰巨的任务,但我强烈建议使用PhoneGap Facebook Plugin。由于您使用的是 build,您还可以轻松地从 Build集成Facebook Connect 插件。

我强烈建议您查看在PhoneGap Facebook 插件存储库phonegap-facebook-plugin / example / HackBook文件夹中找到的以下两个文件:index.htmljs/auth.js

使用 javascript FB Api 时,您可以指定回调函数作为第一个参数,如您可以在文档FB.login(function(response) { ... });中找到示例。

auth.js 的第 25 行显示了使用以下代码调用 FB API 的示例FB.api('/me' ...。虽然此代码请求有关已登录用户的信息,但您可以使用 进行任何 javascript API 调用,您可以在此处FB.api()了解相关信息(查看第四个示例)。

查看代码,看看它是如何工作的/如何实现的,如果您有任何问题,请告诉我 :)

于 2013-05-11T06:45:35.383 回答