2011-03-23 42 views
0

嘿傢伙 我可以登錄用戶到它的Facebook帳戶,並在他的個人資料上發佈內容。 但我無法做到的是獲取Facebook用戶信息。 我不知道在哪裏訪問令牌,如果由Facebook提供的會話。 我使用fbConnect.jar,在我的lib文件夾添加它和構建路徑 以下是我使用的代碼: -Fetch Facebook用戶數據

private Facebook facebookClient; 
String information; 
Button fb; 
//** Called when the activity is first created. *//* 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    fb = (Button)findViewById(R.id.fb); 
    fb.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
     whenFbPressed(); 

     } 
    }); 



} 


@Override 
public void onCancel() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onComplete(Bundle values) { 
    // TODO Auto-generated method stub 

    if (values.isEmpty()) { 
     return; 
    } 

    if (!values.containsKey("post_id")) { 
     try { 
      Bundle parameters = new Bundle(); 
      parameters 
        .putString("message", "is Listening to ");// the 

       parameters.putString("attachment", 
       "{\"name\":\"My Test Image\"," + "\"href\":\"" + 
       "http://www.google.com" + "\"," + 
       "\"media\":[{\"type\":\"image\",\"src\":\"" + 
       "http://www.google.com/logos/mucha10-hp.jpg" + 
       "\",\"href\":\"" + "http://www.google.com" + "\"}]" + "}"); 

      parameters.putString("attachment", "{\"name\":\"" + "Abhishek" 
        + "\"," + "\"href\":\"" + "www.google.com" + "\"}]" + "}"); 

      facebookClient.dialog(this, "stream.publish", parameters, this); 
     } catch (Exception e) { 
      System.out.println(e.getMessage()); 
     } 
    } 

} 

@Override 
public void onError(DialogError e) { 
    // TODO Auto-generated method stub 
    System.out.println("Error: " + e.getMessage()); 
} 

@Override 
public void onFacebookError(FacebookError e) { 
    // TODO Auto-generated method stub 
    System.out.println("Error: " + e.getMessage()); 

} 

public void onClick(View v) { 
    if (v == fb) { 
     facebookClient = new Facebook("App_ID"); 
     // facebookClient = new Facebook("App_ID"); 
     // replace APP_API_ID with your own 
     facebookClient.authorize(this, new String[] { "publish_stream", 
       "read_stream", "offline_access" }, this); 
    } 
} 

public void whenFbPressed(){ 
    facebookClient = new Facebook("App_ID"); 
    // facebookClient = new Facebook("App_ID"); 
    // replace APP_API_ID with your own 
    facebookClient.authorize(this, new String[] { "publish_stream", 
      "read_stream", "offline_access","email" }, this); 

} 

回答

1
/* this is user defined method to fetch current user firstnam and last name */ 

public void getUser(){ 

    try{ 
     JSONObject json = Util.parseJson(mFacebook.request("me")); 
     String facebookID = json.getString("id"); 
     String firstName = json.getString("first_name"); 
     String lastName = json.getString("last_name"); 
     mFirstName=firstName; 
     mLastName=lastName; 
     mText.setText("You are logged in : "+mFirstName+"."+mLastName); 
     System.out.println("Firstname>>"+firstName+" LastName>>"+lastName); 
    }catch (Exception e) { 
     // TODO: handle exception 
    }catch(FacebookError fbe){ 

    } 
} 
0

嗯,我知道了。

Facebook在用戶註冊應用程序並允許給定權限時發送訪問令牌。

所以在我的onComplete()方法添加此peice的代碼:

if (values.isEmpty()) { 
    return; 
} 
if (!values.containsKey("post_id")) { 
    try { 
      Log.d("++++++++++++", facebookClient.getAccessToken()); 
      Log.d("++++++++++++", facebookClient.request("me")); 
    } 
} 

,並在我的日誌它給我的數據。