簡體   English   中英

Android從Facebook個人資料獲取生日日期

[英]Android get birthday dates from Facebook profile

我想獲取我朋友列表中的所有生日。 我已經嘗試了好幾天。 我的代碼如下。

Facebook facebook = new Facebook(<MY_FACEBOOK_ID>);

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    mContext = this;
    setContentView(R.layout.main);

    showNotification();

  final String[] PERMISSIONS = new String[] {"user_location", "user_birthday"};        


    facebook.authorize(this, PERMISSIONS, new DialogListener() {
        @Override
        public void onComplete(Bundle values) {}


        @Override
        public void onCancel() {}

        @Override
        public void onFacebookError(FacebookError e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onError(DialogError e) {
            // TODO Auto-generated method stub

        }
    });

    try {

          String token = facebook.getAccessToken();

          Bundle bundle = new Bundle();
          bundle.putString("fields", "id,name");
          bundle.putString("access_token", token);

              String response = facebook.request( "me/friends", bundle ); 

              facebook.setAccessToken(facebook.getAccessToken());

              Toast.makeText(mContext, token , Toast.LENGTH_LONG).show();
              Toast.makeText(mContext, response, Toast.LENGTH_LONG).show();

              JSONObject json = Util.parseJson( response );

              JSONArray data = json.getJSONArray( "data" );

              for ( int i = 0; i < data.length(); i++ )
              {
                  JSONObject friend = data.getJSONObject( i );

                  String id = friend.getString( "id" );
                  String name = friend.getString( "name" );
                  Toast.makeText(mContext, "ID: "+ id , Toast.LENGTH_LONG).show();
                  Toast.makeText(mContext, "NAME: "+ name , Toast.LENGTH_LONG).show();
              }

每次我使用此代碼都會產生錯誤。 令牌都顯示為空,響應都顯示為問題“必須使用活動訪問令牌來查詢有關當前用戶的信息”

創建一個方法:

getProfileInformation()

在方法主體中,您必須編寫:

public void getProfileInformation() {
mAsyncRunner.request("me", new RequestListener() {
    @Override
    public void onComplete(String response, Object state) {
        Log.d("Profile", response);
        String json = response;
        try {
            JSONObject profile = new JSONObject(json);
            // getting name of the user
            String name = profile.getString("name");
            // getting email of the user
            String email = profile.getString("email");
            //getting user birthday
            String birth_day=profile.getString("birthday");

            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), "Name: " + name + "\nEmail: " + email, Toast.LENGTH_LONG).show();
                }

            });

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onIOException(IOException e, Object state) {
    }

    @Override
    public void onFileNotFoundException(FileNotFoundException e,
            Object state) {
    }

    @Override
    public void onMalformedURLException(MalformedURLException e,
            Object state) {
    }

    @Override
    public void onFacebookError(FacebookError e, Object state) {
    }
});

}

上面的函數將從facebook獲取json數據。 您需要解析json以獲得單獨的配置文件數據。

來自Facebook的示例配置文件json將如下所示:

     {
   "id": "1464730016",
   "name": "XYZ",
   "first_name": "XYZ",
   "last_name": "ABC",
   "link": "https://....",
   "username": "XYZ",
   "birthday": "22/10/89",
   "hometown": 
}

有關更多詳細信息,請參閱:

http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM