0

Facebookに投稿できるアプリを開発しようとしています。

SDKがセットアップされたので、ハックブックの例のようにFBボタンを使用してログインできます。見た目があまり好きではありません。私はアプリを開発していて、その上に webview ポップアップを浮かせていますか?

多分私はそれをすべて間違っているかもしれませんが、設定アクティビティ内でFacebookのログイン/パスワードを何らかの形で取得し、トークンを共有設定に保存したいと思っています.

それを行う方法はありますか?

4

1 に答える 1

1

アクセス トークンを SharedPrefs に保存するには、有効なセッションを設定するときに次のコードを使用します。

Utility.fb.authorize(MainActivity.this,Utility.fbPermissions , new DialogListener() {

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

                }

                @Override
                public void onError(DialogError e) {
                    // TODO Auto-generated method stub
                    Toast.makeText(context, "Dialog Error", Toast.LENGTH_LONG).show();


                }

                @Override
                public void onComplete(Bundle values) {
                    // TODO Auto-generated method stub
                    Toast.makeText(context, "User Logged In", Toast.LENGTH_LONG).show();
                    Utility.editor = Utility.prefs.edit();
                    Utility.editor.putString("access_token", Utility.fb.getAccessToken());
                    Utility.editor.putLong("access_expires", Utility.fb.getAccessExpires());
                    Utility.editor.commit();
                    Intent intent = new Intent(context, UpdateStatus.class);
                    startActivity(intent);

                }

                @Override
                public void onCancel() {
                    // TODO Auto-generated method stub
                    Toast.makeText(context, "Cancelled by user", Toast.LENGTH_LONG).show();

                }
            });

その後、アクセス トークンの有効性を確認し、ユーザー名やパスワードを要求することなく、ユーザーに直接ログインできます。

Utility.prefs = getSharedPreferences(Utility.PREF_UTILITY_FILE_NAME, MODE_PRIVATE);
        Utility.access_token = Utility.prefs.getString("access_token", null);
        Utility.expires = Utility.prefs.getLong("access_expires", 0);

        if(Utility.access_token != null)
        {
            Utility.fb.setAccessToken(Utility.access_token);
        }

        if(Utility.expires !=0)
        {
            Utility.fb.setAccessExpires(Utility.expires);
        }

        if(Utility.fb.isSessionValid())
        {
            //user is already logged in

            }

編集 : Facebook API がオフライン アクセス許可を削除して以来、ユーザー ログインを承認する認証を行っているアクティビティに次のコードを配置することで、アクセス トークンの有効性を高めることができます。

public void onResume() {    
        super.onResume();
        Utility.fb.extendAccessTokenIfNeeded(this, null);
    }
于 2012-10-04T16:26:27.560 に答える