1

Facebook にログインする小さなアプリケーションを作成し、テキストをウォールに投稿できます。最初はうまくいきました。しかし翌日、アプリケーションは Facebook のエラーを取得します。

public class fblogin extends Activity implements OnClickListener {

    String API_ID;
    Facebook fb;
    TextView fronttext;
    ImageView pic;
    Button postbutton,loginfb; 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.loginscreen);

        API_ID = getString(R.string.API_ID);
        fb= new Facebook(API_ID);
        pic=(ImageView) findViewById(R.id.picture_pic);
        fronttext=(TextView)findViewById(R.id.fronttext);
        postbutton= (Button)findViewById(R.id.post);
        loginfb=(Button)findViewById(R.id.login);

        loginfb.setOnClickListener(this);
        updateButtonImage();
    }

    public void updateButtonImage()
    {
        if(fb.isSessionValid())
        {   
            postbutton.setVisibility(Button.VISIBLE);
            loginfb.setText("Logout");
            fronttext.setText("WelCome ");
            pic.setVisibility(ImageView.VISIBLE);
            Toast.makeText(getApplicationContext(), "You are log In ",Toast.LENGTH_LONG);


            JSONObject obj=null;
            URL img_url=null;

            try {
                String jsonUser = fb.request("me");
                obj=Util.parseJson(jsonUser);
                String id = obj.optString("id");
                String name=obj.optString("name");
                fronttext.setText("WelCome "+ name);
                img_url =new URL("http://graph.facebook.com/"+id+"/picture?type=small");
                Bitmap bmp=BitmapFactory.decodeStream(img_url.openConnection().getInputStream()); 
                pic.setImageBitmap(bmp);

            } catch (FacebookError e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }



        }
        else
        {
            postbutton.setVisibility(Button.INVISIBLE);
            loginfb.setText("Login");
            fronttext.setText("To get Started , Login Using Facebook");
            pic.setVisibility(ImageView.INVISIBLE);
            Toast.makeText(getApplicationContext(), "You are log Out ",Toast.LENGTH_LONG);
        }

    }

    public void postbuttonClicks(View v)
    {
        switch(v.getId()){
        case R.id.post:
            //post
            fb.dialog(fblogin.this,"feed",new DialogListener() {

                @Override
                public void onFacebookError(FacebookError e) {
                    // TODO Auto-generated method stub
                    Toast.makeText(fblogin.this, "facebook Error....", Toast.LENGTH_LONG).show();
                }

                @Override
                public void onError(DialogError e) {
                    // TODO Auto-generated method stub
                    Toast.makeText(fblogin.this, "Error On Page.....", Toast.LENGTH_LONG).show();
                }

                @Override
                public void onComplete(Bundle values) {
                    Toast.makeText(fblogin.this, "Sucessfully Post on wall...", Toast.LENGTH_LONG).show();

                }

                @Override
                public void onCancel() {
                    Toast.makeText(fblogin.this, "Cancel The Activity....", Toast.LENGTH_LONG).show();

                }
            });

            break;

        }


    }
    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        if(fb.isSessionValid()){
            //log out

        try {
            fb.logout(getApplicationContext());
            updateButtonImage();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }

        else{
            //login
               fb.authorize(fblogin.this,new DialogListener() {

                   @Override
                    public void onComplete(Bundle values) {

                        updateButtonImage();
                    }
                   @Override
                public void onFacebookError(FacebookError e) {
                       updateButtonImage();
                    Toast.makeText(fblogin.this, "facebookError", Toast.LENGTH_LONG).show();
                }

                @Override
                public void onError(DialogError e) {

                    Toast.makeText(fblogin.this, "facebookon...Error", Toast.LENGTH_LONG).show();
                }



                @Override
                public void onCancel() {
                    // TODO Auto-generated method stub
                    Toast.makeText(fblogin.this, "facebookCancel", Toast.LENGTH_LONG).show();
                }
            });

        }
    }  
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);
         fb.authorizeCallback(requestCode, resultCode, data);

    }
}

次にonActivityResult、メソッドを作成するとエラーが解決され、ログインできます。しかし、今日もまたそのエラーが発生しました。解決するにはどうすればよいですか?プログラムに問題はありますか? それともセッションの問題?

4

0 に答える 0