2010-12-19 63 views
1

在我的代碼中,我可以讓Facebook顯示出來,顯示請求的權限和授權,每次我回來後,它都會記住我是誰。Android Facebook API授權/記住它的一面,但不是我的?

在我的應用程序本身,雖然它似乎無法識別它已登錄,但對Authorize的調用永遠不會通過DialogListener接口返回。包括我的應用程序適配器的不完整代碼。

package com.metalrain.ca.newschoolshooter_full; 

import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.net.MalformedURLException; 

import Hammer.App.MyLibs.APPSTATICS; 
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.MotionEvent; 

import com.facebook.android.AsyncFacebookRunner; 
import com.facebook.android.DialogError; 
import com.facebook.android.Facebook; 
import com.facebook.android.FacebookError; 
import com.facebook.android.Facebook.DialogListener; 

public class FacebookIntegrator implements DialogListener{ 



public static final String APP_ID = "176680882361390"; 

private final Facebook mFacebook; 
//private final AsyncFacebookRunner mAsyncRunnoner; 

Context ctx; 
String[] Permissions = new String[] {"publish_stream", "read_stream", "offline_access"}; 

FacebookIntegrator(final Context ctx) { 
    this.ctx = ctx; 
    this.mFacebook = new Facebook(FacebookIntegrator.APP_ID); 
    //this.mAsyncRunner = new AsyncFacebookRunner(this.mFacebook); 
} 

public void SubmitScore() { 
    Log.e("MetalRain", "Started SubmitScore"+mFacebook.getAccessToken()); 
    //I use the class from the login button to do this 
    //final LoginButton lb = new LoginButton(this.ctx); 

    if (mFacebook.isSessionValid()) { 
    Log.i("MetalRain", "There is a valid facebook sessi"); 
     Bundle b = new Bundle(); 
    try { 
    mFacebook.request("/me/feed", b, "POST"); 
    } catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } catch (MalformedURLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 
      b.putString("status", "This is a test: name"); 

    } else { 
    Log.i("MetalRain","Authorizing facebook"); 
    mFacebook.authorize((Activity) this.ctx,this.Permissions, 
    this); 
    } 
    Log.e("MetalRain", "Finished SubmitScore"); 
} 

     public void onComplete(Bundle values) { 
      if (!values.containsKey("post_id")) 
      { 
       try 
       { 
        Bundle parameters = new Bundle(); 
        parameters.putString("message", "this is a test");// the message to post to the wall 
        mFacebook.dialog(APPSTATICS.CTX, "stream.publish", parameters, this);// "stream.publish" is an API call 
       } 
       catch (Exception e) 
       { 
        // TODO: handle exception 
        System.out.println(e.getMessage()); 
       } 
      } 

     Log.e("MetalRain", "On Complete"); 
     } 

     public void onFacebookError(FacebookError error) { 
      Log.e("MetalRain","fbFAILURE "+error.getMessage()); 
     } 

     public void onError(DialogError error) { 
      Log.e("MetalRain","FAILURE "+error.getMessage()); 
     } 

     public void onCancel() { 
      Log.e("MetalRain","CANCELED"); 
     } 
} 

我沒有看到任何錯誤或任何日誌消息後返回。它只是返回到我的活動,並且就像沒有任何事情發生一樣。

+0

我已經在模擬器中取得了成功。我的代碼在那裏工作,我運行它,提交了測試消息,它寫到我的牆上。仍然沒有成功的聯繫之一。 UI也不同,它在對話框中顯示登錄窗口,而在我的N1上,它顯示爲全屏活動? – HaMMeReD 2010-12-19 08:32:52

+0

我應該提及,當它工作時,它會問我登錄名和密碼,雖然我試圖使用單點登錄與我的應用程序,這可能是問題的根源? – HaMMeReD 2010-12-19 08:35:31

+0

我從我的手機中刪除了所有的Facebook應用程序更新,並且我的所有功能都能正常工作,似乎只能通過最新的Facebook應用程序才能打破。任何人都有解決方法?登錄工作不只是回調 – HaMMeReD 2010-12-19 10:18:56

回答

3
@Override 
protected void onActivityResult(int requestCode, int resultCode, 
           Intent data) { 
    fbi.mFacebook.authorizeCallback(requestCode, resultCode, data); 
} 

這是最新版本所要求的,因爲它是完全活動的而不是某種形式的遠程對話。一旦我添加了這一切,這一切工作(添加到我的活動,而不是上面的代碼,fbi是FacebookIntegrator,上面鏈接的類)。

相關問題