2017-03-13 14 views
0

自分のエミュレータでうまく動作するカスタムボタンを作成しました。しかし、デバイス上では動作しません。最初にログインしますが、2回目の試行では何らかのアクションを実行します。AndroidカスタムFacebookログインボタン

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(getApplicationContext()); 
    setContentView(R.layout.activity_main); 
    callbackManager = CallbackManager.Factory.create(); 
    Button testButton = (Button) findViewById(R.id.test); 
    testButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      com.facebook.login.widget.LoginButton btn = new LoginButton(MainActivity.this); 
      btn.setReadPermissions(Arrays.asList(
        "public_profile", "email", "user_birthday", "user_friends")); 

      if (Profile.getCurrentProfile().getCurrentProfile() != null) { 
       LoginManager.getInstance().logOut(); 
       Button currentButton = (Button) findViewById(v.getId()); 
       currentButton.setText("LOG IN"); 
      } else { 
       btn.performClick(); 
       Button currentButton = (Button) findViewById(v.getId()); 
       currentButton.setText("LOG OUT"); 
      } 
     } 
    }); 

    LoginManager.getInstance().registerCallback(callbackManager, 
      new FacebookCallback<LoginResult>() { 
       @Override 
       public void onSuccess(LoginResult loginResult) { 


        GraphRequest.newMeRequest(
          loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() { 
           @Override 
           public void onCompleted(JSONObject json, GraphResponse response) { 
            if (response.getError() != null) { 
             // handle error 
             Toast.makeText(MainActivity.this, "error", Toast.LENGTH_LONG).show(); 
            } else { 

             try { 

              user_name = json.getString("name"); 
              Toast.makeText(getApplicationContext(), user_name, Toast.LENGTH_LONG).show(); 
              System.out.println(user_name); 
             } catch (JSONException e) { 
              e.printStackTrace(); 
             } 

             Intent intent = new Intent(MainActivity.this, SignActivity.class); 
             intent.putExtra(EXTRA_MESSAGE, user_name); 
             startActivity(intent); 
            } 
           } 

          }).executeAsync(); 

       } 

       @Override 
       public void onCancel() { 

       } 

       @Override 
       public void onError(FacebookException error) { 

       } 
      }); 

} 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    callbackManager.onActivityResult(requestCode, resultCode, data); 

} 

アプリケーションはFacebookの設定ページで一般公開されました。標準のLoginButtonは問題なく動作しますが、ボタンの形状や色を変更するには、カスタム化する必要があります。任意のアイデアをどのように行うには?前もって感謝します。

FacebookのSDKバージョン:4.5 エミュレータ/デバイスAPIのバージョン:21分の23(それぞれ)

+0

フェイスブックコールバックメソッドのいずれかが2回目に呼び出されますか? – rgv

+0

@NoobDoggはい、onErrorメソッドが呼び出されました – BekaBot

+0

例外はありますか? – rgv

答えて

0

エラーが新たに生成された鍵ハッシュによって引き起こされました。新しいものを(スタックトレースから)facebookアプリケーションの設定に追加することによって問題を解決しました。

関連する問題