3

Facebook に正常にログインした後、他のユーザーのプロフィールにリダイレクトするにはどうすればよいですか?
例: ログインと認証に成功すると、次のページに移動します:

http://www.facebook.com/torasanshochiku .

このチュートリアルを使用して Facebook を接続しまし

これは私のFacebookConnectionActivityです:

public abstract class FBConnectionActivity extends Activity {
public static final String TAG = "FACEBOOK";
private Facebook mFacebook;
public static final String APP_ID = "271496479563642";
private AsyncFacebookRunner mAsyncRunner;
private static final String[] PERMS = new String[] { "read_stream" };
private SharedPreferences sharedPrefs;
private Context mContext;

private TextView username;
private ProgressBar pb;

public void setConnection() {
        mContext = this;
        mFacebook = new Facebook(APP_ID);
        mAsyncRunner = new AsyncFacebookRunner(mFacebook);
}

public void getID(TextView txtUserName, ProgressBar progbar) {
        username = txtUserName;
        pb = progbar;
        if (isSession()) {
                Log.d(TAG, "sessionValid");
                mAsyncRunner.request("me", new IDRequestListener());
        } else {
                // no logged in, so relogin
                Log.d(TAG, "sessionNOTValid, relogin");
                mFacebook.authorize(this, PERMS, new LoginDialogListener());
        }
}

public boolean isSession() {
        sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext);
        String access_token = sharedPrefs.getString("access_token", "x");
        Long expires = sharedPrefs.getLong("access_expires", -1);
        Log.d(TAG, access_token);

        if (access_token != null && expires != -1) {
                mFacebook.setAccessToken(access_token);
                mFacebook.setAccessExpires(expires);
        }
        return mFacebook.isSessionValid();
}

private class LoginDialogListener implements DialogListener {

        @Override
        public void onComplete(Bundle values) {
                Log.d(TAG, "LoginONComplete");
                String token = mFacebook.getAccessToken();
                long token_expires = mFacebook.getAccessExpires();
                Log.d(TAG, "AccessToken: " + token);
                Log.d(TAG, "AccessExpires: " + token_expires);
                sharedPrefs = PreferenceManager
                                .getDefaultSharedPreferences(mContext);
                sharedPrefs.edit().putLong("access_expires", token_expires)
                                .commit();
                sharedPrefs.edit().putString("access_token", token).commit();
                mAsyncRunner.request("me", new IDRequestListener());
        }

        @Override
        public void onFacebookError(FacebookError e) {
                Log.d(TAG, "FacebookError: " + e.getMessage());
        }

        @Override
        public void onError(DialogError e) {
                Log.d(TAG, "Error: " + e.getMessage());
        }

        @Override
        public void onCancel() {
                Log.d(TAG, "OnCancel");
        }
}

private class IDRequestListener implements RequestListener {

        @Override
        public void onComplete(String response, Object state) {
                try {
                        Log.d(TAG, "IDRequestONComplete");
                        Log.d(TAG, "Response: " + response.toString());
                        JSONObject json = Util.parseJson(response);

                        final String id = json.getString("id");
                        final String name = json.getString("name");
                        FBConnectionActivity.this.runOnUiThread(new Runnable() {
                                public void run() {
                                        username.setText("Welcome: " + name+"\n ID: "+id);
                                        pb.setVisibility(ProgressBar.GONE);

                                }
                        });
                } catch (JSONException e) {
                        Log.d(TAG, "JSONException: " + e.getMessage());
                } catch (FacebookError e) {
                        Log.d(TAG, "FacebookError: " + e.getMessage());
                }
        }

        @Override
        public void onIOException(IOException e, Object state) {
                Log.d(TAG, "IOException: " + e.getMessage());
        }

        @Override
        public void onFileNotFoundException(FileNotFoundException e,
                        Object state) {
                Log.d(TAG, "FileNotFoundException: " + e.getMessage());
        }

        @Override
        public void onMalformedURLException(MalformedURLException e,
                        Object state) {
                Log.d(TAG, "MalformedURLException: " + e.getMessage());
        }

        @Override
        public void onFacebookError(FacebookError e, Object state) {
                Log.d(TAG, "FacebookError: " + e.getMessage());
        }

}

//@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        mFacebook.authorizeCallback(requestCode, resultCode, data);
}
}
4

1 に答える 1

0

ユーザーを誰かのプロフィールにリダイレクトするためにできることは、一般的なプロフィール ページのリンクを使用することです。
それはこのように見えます -

//facebook.com/profile.php?id=USER_FBID

USER_FBIDユーザーの Facebook ID はどこにありますか。したがって、ユーザーの FBID を取得するだけで、リンクを使用してユーザーのプロファイルに直接移動できます。リダイレクト時にユーザーを同じプロトコルに保つために、プロトコル相対 URL を使用していることに注意してください。ユーザーが安全に閲覧していた場合、HTTPS安全なリンクにリダイレクトされます。ユーザーが安全に閲覧していない場合、通常のHTTPリンクに誘導されます。

于 2012-07-02T10:44:53.770 に答える