当前位置: 首页 > 面试题库 >

Android从Facebook个人资料获取生日日期

籍靖
2023-03-14
问题内容

我想获取我朋友列表中的所有生日。我已经尝试了好几天。我的代码如下。

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/


 类似资料:
  • 问题内容: 你好,我是python和django的新手,我需要一个获取当前用户配置文件的视图,我知道我应该使用User的get_profile,但我不知道如何使用它。我读了django文件,但并没有帮助我。这是我从doc中找到的: 问题答案: Django的文档说明了一切,尤其是存储有关用户的其他信息的部分。首先,您需要在字段中的某个位置定义一个模型,以获取用户的其他信息: models.py 然

  • 这是我用来在代码中检索图片的代码。发送图形请求后,我立即调用此函数。 让upLoadData=尝试数据(内容:URL(fileURLWithPath:“https:/graph.facebook.com/(fbUID)/picture?type=large)))让upLoadImage=UIImage(数据:upLoadData)?。jpeg(低) 然而,这是我得到的错误 错误Domain=nsc

  • 个人资料        展示、管理个人的基本资料 点击编辑按钮,进入编辑模式,输入新的用户信息,点击保存,完成资料修改。

  • 问题内容: 在Android中,最简单的方法来获得朋友的生日?还是关系状态?使用FQL还是通过Android的Facebook API SDK进行请求? 谢谢。 问题答案: 现在,如果您打印jobject1,您将获得所有朋友的生日清单。 响应将采用JSON格式,您必须从中获取值。 authenticatedFacebook是您反对Facebook的对象。 为了进一步说明,请检查此链接 .....

  • 问题内容: 在我的android应用程序中,我用以下代码读出了所有联系人: 这就是我试图为每个联系人读出生日事件的方式。但是显然它还不起作用。那么,如何正确读出联系人的生日? 问题答案: 温馨提示: 某些OEM会提供自己的联系人提供商(不是标准的Android提供商),并且 可能 未遵循标准的Android惯例。例如,com.android.providers.contacts.HtcContac

  • 我正在使用这些依赖项: 是否有可能将当前活动配置文件添加到每条日志行?这样就可以根据splunk/elk/... 所以不是 它应该记录下来 编辑:基于Marcin的回答,我实现如下: application.yml ProfileLogger.java logconfig.java 这将打印如下所示的日志: 这已经很好了,但还不完全是我想要的。我想从一开始就添加概要文件->即使是“启动的应用程序”