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(それぞれ)
フェイスブックコールバックメソッドのいずれかが2回目に呼び出されますか? – rgv
@NoobDoggはい、onErrorメソッドが呼び出されました – BekaBot
例外はありますか? – rgv