0

重複の可能性:
他のアプリからFacebookアプリを起動する

私は1つのAndroidプロジェクトを実行しています。そのプロジェクトでは、UserId、AccessTokenなどのFacebookユーザーの詳細を取得する必要があります。

FcebookSDKを使用してFacebook統合を実行しました。

現在、FacebookはFacebookアプリケーションを開いてユーザーの詳細を取得するためのURLSCHEMEをリリースしました。

私はこのようにやった、

long longFacebookUid = Long.parseLong(facebookUid);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setClassName("com.facebook.katana", "com.facebook.katana.ProfileTabHostActivity");
intent.putExtra("extra_user_id", facebookUid);
this.startActivity(intent);
return;

Facebookアプリケーションと呼ばれるこのコードでは、その後、userIdとTokenを取得する方法はありません。

ありがとう。

4

1 に答える 1

0

URLスキームのほかに、SDKベースの関数を使用する方が簡単ですが、それはあなたが望む答えではないかもしれません。

備考:以下の情報はfacebook-android SDK 2.0に基づいています(3.0は現在利用可能です)

承認機能(ログイン部分)を実行した後(以下はFacebookドキュメントのサンプルコードです)

 facebook.authorize(this, new String[] {}, new DialogListener() {
            @Override
            public void onComplete(Bundle values) {
                SharedPreferences.Editor editor = mPrefs.edit();
                editor.putString("access_token", facebook.getAccessToken());
                editor.putLong("access_expires", facebook.getAccessExpires());
                editor.commit();
            }

            @Override
            public void onFacebookError(FacebookError error) {}

            @Override
            public void onError(DialogError e) {}

            @Override
            public void onCancel() {}
        });
    }

アクセストークンを取得するには、SDK2.0で次の関数を実行するだけです。

String access_token=facebook.getAccessToken();

ユーザーIDの場合

public String GetUserID(){
    Bundle params = new Bundle();
    params.putString("fields", "id");
    String resp= "";
    try {
        resp = facebook.request("me", params, "GET");//call the request function in SDK 2.0, using graph api
    } catch (FileNotFoundException e) {
    } catch (MalformedURLException e) {
    } catch (IOException e) {
    }
    try{
        resp = new JSONObject(resp).getString("id");
    }catch(JSONException e1){
    }
    }
    return resp;
};

これらは結果を得る最も簡単な方法だと思いますが、URLスキームを使用していません。

お役に立てば幸いです。

于 2012-10-29T03:23:19.350 に答える