2013-07-24 157 views
0

我使用的是Facebook的官方Android SDK,我是Facebook上的一個應用的管理員。無法訪問Facebook登錄?

我讀到默認情況下,應用程序處於沙盒模式,除管理員和開發人員以外,沒有人可以訪問它。我正在使用它在我的android應用程序中添加Facebook登錄功能。但是,我添加了我的朋友,他們以開發人員身份與我一起開發應用程序,但他們無法通過Facebook以應用程序的帳戶憑據登錄。我從Facebook的應用程序設置中禁用了應用程序的沙盒模式,但他們無法訪問登錄設備。一旦他們點擊Facebook登錄按鈕,他們就會被重定向到相同的活動,而沒有任何事情發生,而在我的情況下,我登錄成功,應用程序正常進行。

爲了讓它公開,我還需要做些額外的設置嗎?

謝謝:)

+0

您是否啓用了Facebook應用程序中的深層鏈接和Facebook登錄? –

+0

而從相同的系統或不同的應用程序安裝? –

+0

實際上,我無法將它放在正確的單詞中。我已在developers.facebook.com上註冊了一個新應用程序,並且正在使用該新創建的應用程序的應用程序標識符進入我的android應用程序的代碼。我想在我的Android應用程序中使用Facebook登錄設施... – 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");