2

これは、Facebook がログイン プロセスに変更を加えたためだと思います。

数日前、私の航空アプリはfacebook-actionscript-apiの FacebookDesktop クラスで動作していました。今日、プロジェクトを開いたところ、Facebook のログイン画面が、アプリの作成を開始したときと少し異なっていることに気付きました。ユーザー ID とパスワードを入力したら、公開プロフィール、友達リスト、写真へのアクセスをアプリに許可します。次に、別の画面が表示され、自分に代わって友達に投稿する権限をアプリに付与します。

その後、ウィンドウが閉じ、「OAuthException 2500 現在のユーザーに関する情報を照会するには、アクティブなアクセス トークンを使用する必要があります。」というメッセージが表示されます。

ブラウザから Facebook にサインインすると、自分のアプリが [Your Apps] の下に表示されますが、ログインしてアプリから何もできません。

OSX Lion の GraphAPI_Desktop_1_8_1.swc で Adob​​e Flash を使用しています。

これが私のコードです:

public function MyApp(){
     FacebookDesktop.init(APP_ID, onInit);
}
protected function onInit(result:Object, fail:Object):void {
    if (result) {
        trace("onInit, Logged In\n");
    } else {
        trace("onInit, Not Logged In\n");
        var permissions:Array = ["publish_stream", "user_photos"];
        FacebookDesktop.login(onLogin, permissions);            
    }
}
protected function onLogin(result:Object, fail:Object):void {
    if (result) { 
        trace("Logged In as:");
        trace(FacebookDesktop.getSession().user.name);
    } else {        
        trace("Login Failed");  
        trace('code: '+fail.error.code); //code: 2500
        trace('message: '+fail.error.message); //message: An active access token must be used to query information about the current user.
        trace('type: '+fail.error.type); //type: OAuthException
    }
}

SDK で提供されている FlashDesktopExample を使用すると、同じ結果が得られます (もちろん、アプリ ID で変更されています)。

どんな助けでも素晴らしいでしょう!前もって感謝します!

4

4 に答える 4

0

私は問題を理解しました: LoginWindow クラスは、URI に基づいてトークンを設定します。

LOGIN_SUCCESS_URL ( http://www.facebook.com/connect/login_success.html) および LOGIN_SUCCESS_SECUREURL ( https://www.facebook.com/connect/login_success.html) ページが uri にアクセス トークンを含めなくなるまで、これは正常に機能しました。

したがって、トークンが設定されることはありません。ログイン後、Facebook の [あなたのアプリ] セクションにアプリが表示されますが、アプリはトークンなしでは何もできません。

私には2つの解決策があります:

最も簡単な方法は、次のように com.facebook.graph.core.FacebookURLDefaults の LOGIN_SUCCESS_URL および/または LOGIN_SUCCESS_SECUREURL プロパティを変更することです。

82 行目から:

public static var LOGIN_SUCCESS_URL:String = 'http://www.facebook.com/connect/login_success.html';
public static var LOGIN_SUCCESS_SECUREURL:String = 'https://www.facebook.com/connect/login_success.html';

への変更:

public static var LOGIN_SUCCESS_URL:String = 'http://www.yourwebsite.com/';
public static var LOGIN_SUCCESS_SECUREURL:String = 'https://www.yoursecurewebsite.com/';

もちろん、' ' ではなく、独自の Web サイトを使用しますhttp://www.yourwebsite.com/。使用http://localhost/してみましたが、とてもうまくいきました。

別の解決策は次のとおりです。

次のコードで com.facebook.graph.windows.LoginWindow を変更します。ファイルにいくつかの変更を加えたので、SDK の新しいコピーの行番号と異なる場合はご容赦ください。

143行目あたり: 変更:

vars.redirect_uri = FacebookURLDefaults.LOGIN_SUCCESS_URL;

に:

vars.redirect_uri = 'http://localhost/';

実稼働コードでは、おそらく の代わりに独自の Web サイト アドレスを使用したいでしょうlocalhostが、私はテスト目的で localhost を使用しました。

次に、handleLocationChange 関数 (168 行目あたり) で、これを else if ステートメントに追加します。

}else if (html.location.indexOf ('http://localhost/') == 0) {               
    loginCallback(getURLVariables(), null);
    userClosedWindow = false;
    html.stage.nativeWindow.close();
    html.removeEventListener(Event.LOCATION_CHANGE, handleLocationChange);
}

前に言ったように、localhost を Web サイトのアドレスに変更します。

これが役立つことを願っています!

于 2013-04-12T18:51:54.730 に答える
0

私はランダムなユーザーに対して同じ問題を抱えていましたが、安全なナビゲーションに関する Facebook の問題であるかどうかはわかりません。

Facebook のユーザー プロパティを確認します: [セキュリティ設定] > [セキュア ブラウジング] (www.facebook.com/settings?tab=security)

  • 「無効」状態のユーザーの場合、正常に機能します。
  • 「移行」状態のユーザーの場合、エラーが発生します。
  • 以前に「有効」状態だったユーザーの場合、正常に機能します。

「移行」状態のユーザーで試して「無効」に変更したところ、問題なく動作しました。次に、「有効」にすると、「移行」状態はなくなり、「有効」とマークされますが、エラーはまだ残っています。だから私はこれが問題だと思いますが、それを修正する方法がわかりません。

于 2013-04-17T18:17:48.190 に答える
-1

1年で多くの変化がありました。これが私が思うことです。答えは、FacebookDesktop.getSession().accessTokenにログインするにはトークンが必要です。

public function MyApp(){FacebookDesktop.init(APP_ID, onInit, FacebookDesktop.getSession().accessToken); }
于 2015-01-24T20:14:19.233 に答える