【问题标题】:In Android how to add user_photos permission to get the facebook album photos?在 Android 中如何添加 user_photos 权限以获取 facebook 相册照片?
【发布时间】:2013-01-18 22:47:56
【问题描述】:

我正在使用 facebook android sdk 访问用户的 facebook 相册和实习生获取照片。 但是当我执行"https://graph.facebook.com/"+wallAlbumID+"/photos?access_token="+facebook.getAccessToken() 时,它会返回空白数据。 { "data": [] }

我读过in stackoverflow questionin Graph API for Photo,我需要在创建facebook 对象时给予user_photospermission。 我不知道该怎么做。我阅读了很多论坛并检查了 SOF,但找不到解决方案。

这就是我创建 facebook 对象的方式

facebook = new Facebook(APP_ID);

谁能帮我解决这个问题。

【问题讨论】:

    标签: java android facebook facebook-graph-api


    【解决方案1】:

    您需要创建一个ArrayList 您想要访问的权限。比如我做的时候,声明变量的时候。

    private static final String[] PERMISSIONS = { "user_photos" };
    

    那么,在实现用户登录区时:

    if (!facebook.isSessionValid()) {
        facebook.authorize(this, PERMISSIONS, new LoginDialogListener());
    }
    

    希望这会有所帮助!

    【讨论】:

    • 非常感谢您的回复。但是我现在在创建 Facebook 实例时收到错误 {"error":{"message":"Malformed access token AAAEAVpwLuvUBAMeXhXSNPr8TcuUA6DVspgM4ZA9tnJRKfgdvZA6ZAF8g1BZB3xXyzE7MnSh0cA6m1ulO7FgdZCwo9KhbEtc2udXws1wKAmAZDZD?access_token=AAAEAVpwLuvUBAMeXhXSNPr8TcuUA6DVspgM4ZA9tnJRKfgdvZA6ZAF8g1BZB3xXyzE7MnSh0cA6m1ulO7FgdZCwo9KhbEtc2udXws1wKAmAZDZD","type":"OAuthException","code":190}},我们应该提供哪个 APP_ID?
    • @Namratha 当您在 Facebook 开发者网站上创建应用程序时,您应该已经获得了应用程序 ID。您使用该应用 ID 创建 Facebook 对象。
    • @CreatineDevelopment:谢谢,我做到了。但我仍然继续收到错误。我已将其作为另一个问题发布在 SOF here 中。再次感谢您的帮助。
    • 我不认为 isSessionValid() 是 Session 对象的一种方法……那是 2.0 的方式。在 3.0 中你应该做 Session.isOpened()
    • @IgorGanapolsky 如果您提供更新的代码,我将更新我的答案以相应地反映。不知道上下文,因为我没有使用过 Facebook 的 3.0 API。
    【解决方案2】:

    您需要使用 Facebook SDK 3.0+。此外,在 FB 网站的开发者设置中启用 OAuth 客户端登录流程。然后就可以使用下面的代码了:

    1. 首先,将用户登录到应用内的 FB 以获取 Session 对象,然后请求 user_photos 的权限(如果尚未授予):

      // start Facebook Login
      Session.openActiveSession(this, true, new Session.StatusCallback() {
      
          // callback when session changes state
          @Override
          public void call(Session session, SessionState state, Exception exception) {
              if (session.isOpened()) {
                  // check for permission to see user photos
                  if (!hasPhotoPermissions())
                      session.requestNewPublishPermissions(new Session.NewPermissionsRequest(MyActivity.this, "user_photos"));
      
                  else {
                      // photos permission granted, fetch user's albums
                      fetchAlbumsFromFB(session);
                  }
              }
          }
      });
      
    2. hasPhotoPermissions() 方法如下所示:

      private boolean hasPhotoPermissions() {
          Session session = Session.getActiveSession();
          return session.getPermissions().contains("user_photos");
      }
      
    3. 然后,您的应用将向用户显示照片权限屏幕以供批准。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-19
      • 2011-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多