frangmentにてログインボタンを表示し、
それをクリックすることでfacebookログインをしようとしているのですが、callbackされません。
最初、facebookから取得したfacebook_app_idを間違えており、エラー画面が表示されましたが、そこを修正したらエラーが表示されなくなったので、facebookとの最初の通信は正しく行われていると思います。
いろいろなサイトを見たのですが、解決策が見つかりませんでした。
最終的なソースが以下です。
java
1import java.util.Arrays; 2 3import android.app.Fragment; 4import android.content.Intent; 5import android.os.Bundle; 6import android.util.Log; 7import android.view.LayoutInflater; 8import android.view.View; 9import android.view.ViewGroup; 10import android.widget.Button; 11 12import com.facebook.CallbackManager; 13import com.facebook.FacebookCallback; 14import com.facebook.FacebookException; 15import com.facebook.FacebookSdk; 16import com.facebook.login.LoginManager; 17import com.facebook.login.LoginResult; 18 19public class TopFragment extends Fragment { 20 21 private View view; 22 private CallbackManager callbackManager; 23 24 @Override 25 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 26 Log.d("TEST", "onCreateView"); 27 view = inflater.inflate(R.layout.top_fragment, container, false); 28 29 FacebookSdk.sdkInitialize(getActivity()); 30 Button toLoginBtn = (Button) view.findViewById(R.id.to_login_button); 31 toLoginBtn.setOnClickListener(new View.OnClickListener() { 32 @Override 33 public void onClick(View v) { 34 Log.d("TEST", "LoginManager.getInstance() start"); 35 LoginManager.getInstance().logInWithReadPermissions(getActivity(), Arrays.asList("public_profile", "email")); //profileとemailの情報を取得 36 Log.d("TEST", "LoginManager.getInstance() end"); 37 } 38 }); 39 40 callbackManager = CallbackManager.Factory.create(); 41 LoginManager.getInstance().registerCallback(callbackManager, 42 new FacebookCallback<LoginResult>() { 43 @Override 44 public void onSuccess(LoginResult loginResult) { 45 //ログイン成功 46 Log.d("TEST", "success"); 47 } 48 @Override 49 public void onCancel() { 50 //キャンセル 51 Log.d("TEST", "cancel"); 52 } 53 54 @Override 55 public void onError(FacebookException exception) { 56 //ログイン失敗 57 Log.d("TEST", "error"); 58 Log.e("TEST", exception.toString()); 59 } 60 }); 61 return view; 62 } 63 64 @Override 65 public void startActivityForResult(Intent intent, int requestCode) { 66 Fragment parent = this.getParentFragment(); 67 if (parent != null) { 68 parent.startActivityForResult(intent, requestCode); 69 } else { 70 super.startActivityForResult(intent, requestCode); 71 } 72 } 73 74 @Override 75 public void onActivityResult(int requestCode, int resultCode, Intent data) { 76 77 Log.d("TEST", "onActivityResult ABC"); 78 super.onActivityResult(requestCode, resultCode, data); 79 callbackManager.onActivityResult(requestCode, resultCode, data); 80 } 81 82 @Override 83 public void onStart(){ 84 super.onStart(); 85 } 86 87 @Override 88 public void onDestroy() { 89 super.onDestroy(); 90 } 91}
実装方法等ご存知の方、参考になるサイト等ご存知の方教えて頂けませんでしょうか?
回答2件
あなたの回答
tips
プレビュー