2012-04-19 13 views
0

Facebookのログインを作成しています。 Facebookのユーザーログインは1回だけで、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を取得する必要があります一度だけログインするユーザーが必要です。

ありがとうございました。

EDIT:

私は、インターネットへのアクセス許可を追加しました。だから問題は私のインターネットにあった。 Facebookは到達できませんでした。私はnullを返している

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

:この行の :問題があることでどのように今までに今

答えて

0

AndroidManifest.xmlを変更して、アプリがインターネットにアクセスできるようにしましたか? JSONObjectで

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

<uses-permission android:name="android.permission.INTERNET"/> 
あなたはこのような何かを実行する必要があります。

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

/meはJSONオブジェクトを返します

関連する問題