2012-04-19 95 views
0

我正在用facebook創建登錄。用戶只用一次登錄Facebook,我需要獲取它的Facebook用戶ID。使用Facebook登錄android

有我使用的代碼:

// Login with facebook 
    public void loginFB(View view) { 

     System.out.println("started"); 
     facebook = new Facebook(kAppId); 

     facebook.authorize(this, new DialogListener() { 

      @Override 
      public void onComplete(Bundle values) { 
       System.out.println("onComplete"); 

       new Thread(new Runnable() { 
        public void run() { 
         JSONObject me = null; 
         try { 
          me = new JSONObject(facebook.request("me")); 
         } catch (MalformedURLException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } catch (JSONException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } catch (IOException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
         try { 
          System.out.println("Login with fb"); 
//here i should get it's user id        
String id = me.getString("id"); 
          System.out.println("id = " + id);              



         } catch (JSONException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
        } 
       }).start(); 

      } 


      @Override 
      public void onFacebookError(FacebookError error) { 
       error.getMessage(); 
       System.out.println("onFacebookError"); 
      } 

      @Override 
      public void onError(DialogError e) { 
       e.getMessage(); 
       System.out.println("DialogError"); 
      } 

      @Override 
      public void onCancel() { 
       System.out.println("onCancel"); 
      } 

     }); 

    } 

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

,所以我得到的回調一個例外方法:

 @Override 
     public void onError(DialogError e) { 
      e.getMessage(); 
      System.out.println("DialogError"); 
     } 

和異常:

com.facebook.android.DialogError: The connection to the server timed out. 

所以我應該改變代碼中的某些內容還是有其他問題?

基本上我需要用戶登錄一次,當他下載一個應用程序,我需要得到他的用戶ID。

謝謝。

編輯:

我又增加了允許互聯網。所以問題出在我的互聯網上。 Facebook無法訪問。

的問題是,現在如何過: 在這一行:

String id = me.getString("id"); 

我是返回null。

回答

0

您是否修改了您的AndroidManifest.xml以允許該應用訪問互聯網?

<uses-permission android:name="android.permission.INTERNET"/> 

http://developers.facebook.com/docs/mobile/android/build/#xml

在JSONObject的,你需要做這樣的事情:

JSONObject me = Util.parseJson((facebook.request("me")); 

/me會返回一個JSON對象