3

ログインページで、ACCESS_TOKEN を取得します。しかし、Friendlistページでは、ACCESS_TOKENを取得できません。私のコードは次のとおりです。私のコードを確認してください。

ユーザーログインコード

mFacebook.authorize(this, sPermissions, new AuthorizeListener());

私は AuthorizeListener() を使用します。このコード

       public class AuthorizeListener implements DialogListener {
      String actoken;
      @Override
      public void onComplete(Bundle values) {
          if (MainFragment.FacebookD) {
              Log.w(MainFragment.LOG_TAG, "::: onComplate :::");
              Log.w(MainFragment.LOG_TAG, "Access token : " + mFacebook.getAccessToken());
              Token = mFacebook.getAccessToken();
            actoken = getAppPreferences(IntroActivity.this, "ACCESS_TOKEN");
            Log.w("GETAPPPREFERENCES",actoken);
          }
      }
   ......

onActivityResult メソッドも書いています。このコード。

     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);

      if (requestCode == MainFragment.FACEBOOK_AUTH_CODE) {
          mFacebook.authorizeCallback(requestCode, resultCode, data);
          Log.w("ACTIVITYRESULT","ACTIVITYRESULT");

                     }
  }
   ......
  Intent intent = new Intent(IntroActivity.this, NorinuriMain.class);
            startActivity(intent);

ログイン後、インテントページ(フレンドリスト取得)

フレンドリストコードを取得する

 public void setupFacebookfriend(){
    Log.w("FacebookFREIND","START");
    String userName;
    String userSex;

    try {
        Log.w("gogogogo","START");

        final JSONObject json = Util.parseJson(mFacebook.request("me/friends"));
        JSONArray d = json.getJSONArray("data");
        JSONObject o ;
        for(int i = 0 ; i < d.length() ; i++){
            JSONObject post=d.getJSONObject(i);
            o = d.getJSONObject(i);
            list.add(o.getString("data"));
            list.add(post.getString("name"));
        }

    }catch (Exception e) {
        e.printStackTrace();
    }
    facebookListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, list));
    facebookListView.setItemsCanFocus(false);
    facebookListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}

このロジックはOKです。しかし、エラーが発生します。

com.facebook.android.FacebookError: 現在のユーザーに関する情報を照会するには、アクティブなアクセス トークンを使用する必要があります。

なぜ起こるの??

4

1 に答える 1

0

このエラーは、Facebookオブジェクトに有効なアクセストークンがない場合に発生します。Facebookの友達リストを取得しようとしている間、セッションが有効かどうかを確認する必要があります。

if (mFacebook.isSessionValid()) {
            Bundle parameters = new Bundle();
            parameters.putString("message", msg);
            try {
                String response = mFacebook.request("me/friends", parameters,
                        "GET");
                System.out.println(response);

                JSONObject obj = Util.parseJson(response);

                Log.i("json Response", obj.toString());
                JSONArray array = obj.optJSONArray("data");

                if (array != null) {
                    for (int i = 0; i < array.length(); i++) {
                        String name = array.getJSONObject(i).getString("name");

                        String id = array.getJSONObject(i).getString("id");

                        Log.i(name, id);
                        arrayListFacebookFriend.add(name);
                        arrayListFacebookFriendId.add(id);
                        // String response2 = mFacebook.request(id+"/feed",
                        // parameters,"POST");
                        // System.out.println(response);
                        // response = mFacebook.request(toID+"/feed",
                        // parameters, "POST");
                    }
                    Log.d("arrayList of Friend>>>>", ""
                            + arrayListFacebookFriend);
                    
                }

            } catch (IOException e) {
                e.printStackTrace();
            } catch (FacebookError e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }
        } else {
            mFacebook.authorize(this, sPermissions, new AuthorizeListener());
        }

このリンクの詳細を確認してください。

Android Facebook..AccessTokenを取得する方法

ユーザーがfbアカウントを持っている場合に私のAndroidアプリケーションにログインするための許可を与える方法

それがあなたの問題を解決することを願っています。

于 2013-02-11T08:06:34.153 に答える