0

我有我得到兩個權限彈出框我的應用程序有問題。第一個是 「Explovia想訪問您的公開資料和好友列表」和第二個是 「Explovia想訪問您的公開資料和好友列表,電子郵件」。的Facebook SDK如何設置兩個讀權限一個

如何設置這兩個只是一個?因爲第二個基本上是要求第一個+電子郵件相同的權限,是否第一個權限然後真的是必要的?

// Create session and make Request object with all permisssions listed 
Session s = new Session(mActivity); 
Session.OpenRequest request = new Session.OpenRequest(mActivity); 
request.setPermissions(Arrays.asList("email")); 
request.setCallback(mCallback); 
s.openForRead(request); 

EDIT:添加回調代碼

private Session.StatusCallback mCallback = new Session.StatusCallback() { 

    @SuppressWarnings("deprecation") 
    @Override 
    public void call(Session session, SessionState state, 
      Exception exception) { 

      if (session.isOpened()) { 

       // make request to the /me API 

       Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { 

       // callback after Graph API response with user object      
       @Override 
       public void onCompleted(GraphUser user, 
         com.facebook.Response response) { 

        try { 

         editEmail.setText((String) user.getProperty("email").toString()); 
        }catch(Exception e){ 

         Toast.makeText(mActivity,"We couldn't retrieve your email because you didn't confirm your email!",Toast.LENGTH_LONG).show(); 
        } 

        editName.setText(user.getFirstName()); 
        editSurname.setText(user.getLastName()); 

        // We must have try-catch here because if user doesn't have confirmed email, app will crash 


        // Get user id because we will need it later to access 
        // user profile picture(graph.facebook.com/uId/picture?width=x&height=x) 
        uId = user.getId().toString(); 
        String url = "https://graph.facebook.com/"+uId+"/picture?width=200&height=200"; 


        imagePhoto.setTag(url); 

        new DownloadImagesTask().execute(imagePhoto); 


        // Delete created session because we don't need it anymore 
        Session.getActiveSession().closeAndClearTokenInformation(); 
        Session.setActiveSession(null); 


       } 
       }); 
      } 

     } 

    }; 
+1

該代碼看起來不錯,但你必須再次在代碼 –

+0

@SahilMittal我加入回調函數過別的地方調用登錄,沒我請求新的權限在這裏也許? – Ado

+0

這看起來很好。你必須把一些斷點,並在你的代碼中究竟會發生這種情況檢查.. –

回答

0

確定我想我找到了解決辦法,在Session.openActiveSession(活動,布爾值,Status.CallBack),我把假的布爾參數和現在它工作。