2013-07-24 6 views
0

Я использую официальный Android SDK от Facebook, и я являюсь администратором приложения на Facebook.Не удается получить доступ к facebook login?

Я читал, что по умолчанию приложение находится в режиме песочницы, и никто кроме администратора и разработчиков не может получить к нему доступ. Я использую его, чтобы добавить функцию входа в Facebook в своем приложении для Android. Тем не менее, я добавил своих друзей, которые разрабатывают приложение со мной как разработчиками, но они не могут войти в систему через Facebook с учетными данными своего аккаунта. Я отключил режим песочницы для приложения из настроек приложения Facebook, но они не могут получить доступ к системе входа. Как только они нажимают кнопку входа в систему Facebook, они перенаправляются на одну и ту же деятельность без каких-либо действий, тогда как в моем случае я успешно вхожу в систему, и приложение работает нормально.

Есть ли какие-либо дополнительные настройки, которые мне нужно сделать, чтобы сделать его общедоступным?

Спасибо :)

+0

Вы включили глубокую ссылку и подписку на facebook в приложении facebook? –

+0

И приложение установлено из той же системы или другой? –

+0

На самом деле, я не могу выразить правильные слова. Я зарегистрировал новое приложение на developers.facebook.com, и я использую app-id этого недавно созданного приложения в своем коде приложения для Android. Я хочу использовать функцию входа в Facebook в своем приложении для Android ... – tigerden

ответ

2
 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()) { 
        // make request to the /me API 

        List<String> permissions = session.getPermissions(); 
        if (!isSubsetOf(PERMISSIONS, permissions)) { 
         pendingPublishReauthorization = true; 
         Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(
           RegisterActivity.this, PERMISSIONS); 
         session.requestNewReadPermissions(newPermissionsRequest); 
         return; 
        } 
        Request.executeMeRequestAsync(session, 
          new Request.GraphUserCallback() { 

         // callback after Graph API response with 
         // user object 
         @Override 
         public void onCompleted(GraphUser user, 
           Response response) { 
          if (user == null) { 
           Toast.makeText(
             RegisterActivity.this 
             .getApplicationContext(), 
             "Facebook Error", 
             Toast.LENGTH_LONG).show(); 

          } else { 
           Toast.makeText(
             RegisterActivity.this 
             .getApplicationContext(), 
             user.getName() 
             + " Logged in Successfully.", 
             Toast.LENGTH_LONG).show(); 
           GraphUser abc = user; 

           id = user.getId(); 
           name = user.getName(); 
           gender = user.getProperty("gender") 
             .toString(); 
           editname.setText(name); 
           username.setText(user.getUsername()); 
           JSONObject jo = user 
             .getInnerJSONObject(); 
           Log.d("Details", jo.toString()); 
           try { 
            emailid.setText(user 
              .getProperty("email") 
              .toString()); 
           } catch (Exception e1) { 
            // TODO Auto-generated catch 
            // block 
            e1.printStackTrace(); 
           } 

           try { 
            location = user.getLocation() 
              .getProperty("name") 
              .toString(); 
           } catch (Exception e) { 

            e.printStackTrace(); 
           } 



          } 

          return; 
         } 

        }); 

       } 
      } 
     }); 

Помещенный onActivityResult Метод

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Session.getActiveSession().onActivityResult(this, requestCode, 
      resultCode, data); 
} 

isSubsetoff() Метод

private boolean isSubsetOf(Collection<String> subset, 
     Collection<String> superset) { 
    for (String string : subset) { 
     if (!superset.contains(string)) { 
      return false; 
     } 
    } 
    return true; 
} 

и разрешения в соответствии с вашими потребностями

private static final List<String> PERMISSIONS = Arrays.asList("email", 
     "user_about_me", "user_location", "user_checkins");