0

이 앱을 이클립스와 함께 테스트하면 모두 괜찮아요.하지만 Google Play 스토어에서이 앱을 게시하면 페이스 북 로그인에 실패했습니다 !! 왜? 제발 도와주세요 !! 그것은 단순한 응용 프로그램입니다 (시장에서 "커피 브레이크");시장에서 페이 스북 로그인으로 안드로이드 오류가 발생했습니다

public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      elementoInserito=(EditText)findViewById(R.id.editTextElementoInserito); 
      elementoEstratto=(TextView)findViewById(R.id.textViewElementoEstratto); 
      inserisci=(Button)findViewById(R.id.buttonInserisci); 
      stampa=(Button)findViewById(R.id.buttonStampa); 

      facebookLogin=(Button)findViewById(R.id.facebookLogin); 
      Session session = Session.getActiveSession(); 
      if (session == null) { 
        if (savedInstanceState != null) { 
         session =Session.restoreSession(this,null,statusCallback,savedInstanceState); 
        } 
        if (session == null) { 
         session = new Session(this); 
        } 
        Session.setActiveSession(session); 
        if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) { 
         session.openForRead(newSession.OpenRequest(this).setCallback(statusCallback)); 
        } 
       } 

       inserisci.setOnClickListener(new OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         inizializza_array(elementoInserito); 
         elementoInserito.setText(""); 
        } 
       }); 
       updateView(); 
     } 
     private void updateView() { 
       Session session = Session.getActiveSession(); 
       if (session.isOpened()) { 
       facebookLogin.setOnClickListener(new OnClickListener() { 
        public void onClick(View view) { 
         onClickLogout(); } 
       }); 

       } 
      else { 
       facebookLogin.setOnClickListener(new OnClickListener() { 
        public void onClick(View view) { 
         onClickLogin(); } 
       }); 
      } 
     } 
     private void onClickLogin() { 
      Session session = Session.getActiveSession(); 
      if (!session.isOpened() && !session.isClosed()) { 
       session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback)); 
      } else { 
       Session.openActiveSession(this, true, statusCallback); 
      } 
      Bundle bundle=new Bundle(); 
      Session.saveSession(session,bundle); 
      Toast.makeText(getApplicationContext(), 
        "sto salvando la sessione "+session.getState(), 
        Toast.LENGTH_LONG).show(); 
     } 
     private void onClickLogout() { 
      Session session = Session.getActiveSession(); 
      if (!session.isClosed()) { 
       session.closeAndClearTokenInformation(); 
      } 
     } 
     private class SessionStatusCallback implements Session.StatusCallback { 
      @Override 
      public void call(Session session, SessionState state, Exception exception) { 
       onSessionStateChange(session, state, exception);  
       updateView(); 
      } 
     } 
     private void onSessionStateChange(Session session, SessionState state, Exception exception) { 
      if (state.isOpened()) { 
       Log.i(TAG, "Logged in..."); 
      } else if (state.isClosed()) { 
       Log.i(TAG, "Logged out..."); 
      } 
     } 
     public void inizializza_array(EditText n){ 
      this.ins=""+n.getText(); 
      if(ins==""){ 
       Toast.makeText(getApplicationContext(), 
         "errore: campo vuoto", 
          Toast.LENGTH_LONG).show(); 
      } 
      else{ 
       lista.add(ins); 
      } 
     } 
     public void stampa(View v){ 
      if(lista.size()==0){ 
       elementoEstratto.setText("Inserire elementi"); 
      } 
      else{ 
      Random random = new Random(); 
      String x = lista.get(random.nextInt(lista.size())); 
       elementoEstratto.setText(x); 
       lista.clear(); 
       try { 
        publishStory(x); 
      } catch (Exception e) { 
      } 
      } 
     } 
     public void onStart() { 
       super.onStart(); 
       Session.getActiveSession().addCallback(statusCallback); 
      } 
      @Override 
      public void onStop() { 
       super.onStop(); 
       Session.getActiveSession().removeCallback(statusCallback); 
      } 
      @Override 
      protected void onSaveInstanceState(Bundle outState) { 
       super.onSaveInstanceState(outState); 
       Session session = Session.getActiveSession(); 
       Session.saveSession(session, outState); 
      } 
      public void publishStory(String sorteggiato) { 
       Session session = Session.getActiveSession(); 
       try {  
       if (session != null){ 
        List<String> permissions = session.getPermissions(); 
        if (!isSubsetOf(PERMISSIONS, permissions)) { 
         pendingPublishReauthorization = true; 
         Session.NewPermissionsRequest newPermissionsRequest = new Session 
           .NewPermissionsRequest(this, PERMISSIONS); 
        session.requestNewPublishPermissions(newPermissionsRequest); 
         return; 
        } 
        Bundle postParams = new Bundle(); 
        postParams.putString("name","")); 
        postParams.putString("caption",""); 
        postParams.putString("description",""); 
        Request.Callback callback= new Request.Callback() { 
         public void onCompleted(Response response) { 
          JSONObject graphResponse = response 
                 .getGraphObject() 
                 .getInnerJSONObject(); 
          String postId = null; 
          try { 
           postId = graphResponse.getString("id"); 
          } catch (JSONException e) { 
           Log.i(TAG, 
            "JSON error "+ e.getMessage()); 
          } 
          FacebookRequestError error = response.getError(); 
          if (error != null) { 
           Toast.makeText(getApplicationContext(), 
            error.getErrorMessage(), 
            Toast.LENGTH_SHORT).show(); 
           } else { 
            Toast.makeText(getApplicationContext(), 
             "shared",//postId 
             Toast.LENGTH_LONG).show(); 
          } 
         } 
        }; 

        Request request = new Request(session, "me/feed", postParams, 
              HttpMethod.POST, callback); 
        RequestAsyncTask task = new RequestAsyncTask(request); 
        task.execute(); 
        } 
       else{ 
        Toast.makeText(getApplicationContext(), 
          "effettua il Login su Facebook per condividere con i tuo amici", 
           Toast.LENGTH_LONG).show(); 
       } 
       } catch (Exception e) { 
        // TODO: handle exception 
       } 
       } 
       private boolean isSubsetOf(Collection<String> subset, Collection<String> superset) { 
        for (String string : subset) { 
         if (!superset.contains(string)) { 
          return false; 
         } 
        } 
        return true; 
       } 
       @Override 
       public void onActivityResult(int requestCode, int resultCode, Intent data) { 
        super.onActivityResult(requestCode, resultCode, data); 
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
       }  
       @Override 
         public boolean onCreateOptionsMenu(Menu menu) { 
          Intent intent = new Intent (MainActivity.this,Info.class); 
          //Intent intent2 = new Intent(MainActivity.this,Caffe.class); 
          menu.add("About Coffee Break").setIntent(intent); 
          //menu.add("Il caffè").setIcon(R.drawable.caffe).setIntent(intent2); 
          return true; 
         }  
    } 

내가이 문제

+1

당신은 응용 프로그램의 릴리스의 해시 키를 추가 했 페이스 북에서 개발자 계정의 키 서명? 그렇지 않다면 debug.keystore Key Hash와 함께 추가해야합니다. 추가 한 경우 잘못되었으므로 다시 작성해야합니다. –

+0

서명 된 키 해시 값 FB ...을 추가 했습니까? – Basil

+0

fb @Basil의 서명 된 키 해시를 얻는 방법 – alicanbatur

답변

0

나는이 코드를 이해하지 않았다 rigth 방법 에서 relese.keystore를 읽어 보지 않았, 자기 문제를 해결했습니다를했습니다 내가 왜 이해가 안 :

keytool -exportcert -alias myAlias -keystore ~/.your/path/release.keystore | openssl sha1 -binary | openssl base64 

나는 내가 가진 코드를 실현 오른쪽 키

myAlias ​​= ALIS 내가 프로젝트를 내보낼 때 사용

~/부여됨/경로/release.keystore = 일식에서 발생하는 키가 위치한 경로 및

좋은 파일 작업의 이름은

관련 문제