2016-10-06 10 views
1

私はこれを数時間苦労しています。ここで私が取る手順です:Androidでコードネーム1のFacebook認証を有効にする方法

  1. com.recipes.authにパッケージ名を設定し、Android用Facebookアプリを作成し、メインのパッケージcom.recipes.authとメインクラスでFacebookAuth
  2. を新たに裸の骨のコードネーム1つのアプリを作成し、FacebookAuthSubにメインクラス名を設定します
  3. 次に、ハッシュを生成して貼り付けます。ハッシュは次のコマンドを使用して作成されます。

    keytool -exportcert -alias(your_keystore_alias)-keystore(path_to_your_keystore)| openssl sha1 - バイナリ| openssl base64では

  4. がメインフォームに次のコードを書くコードネームの一つfacebook.appIdでビルドヒントを追加します。

    {サーバー}は私のサーバーのURIです
    String clientId = "xxxxx"; 
    String redirectURI = "{server}/auth/facebook"; 
    String clientSecret = "xxx"; 
    Login fb = FacebookConnect.getInstance(); 
    fb.setClientId(clientId); 
    fb.setRedirectURI(redirectURI); 
    fb.setClientSecret(clientSecret); 
    //Sets a LoginCallback listener 
    fb.setCallback(new LoginCallback() { 
        @Override 
        public void loginSuccessful() { 
         ConnectionRequest connectionRequest = new ConnectionRequest(); 
         connectionRequest.setPost(false); 
         connectionRequest.setUrl(
           "{server}/auth/facebook/callback?access_token=" 
         + fb.getAccessToken().getToken()); 
         connectionRequest.addResponseListener(event -> { 
          Log.p(new String(connectionRequest.getResponseData())); 
         }); 
         NetworkManager.getInstance().addToQueue(connectionRequest); 
        } 
    
        @Override 
        public void loginFailed(String errorMessage) { 
         Dialog.show("No!", "it did not work!", "sad", null); 
        } 
    }); 
    
    Form hi = new Form("Hi World"); 
    Button loginWithFacebook = new Button("Fb Auth"); 
    loginWithFacebook.addActionListener(event -> { 
        //trigger the login if not already logged in 
        if(!fb.isUserLoggedIn()){ 
         fb.doLogin(); 
        }else{ 
         //get the token and now you can query the facebook API 
         String token = fb.getAccessToken().getToken(); 
        } 
    }); 
    hi.add(loginWithFacebook); 
    hi.show(); 
    

    。私のサーバーのauthパスは{server}/auth/facebookで、コールバックURLは{server}/auth/facebook/callbackで、成功のリダイレクトは{server}/api/Users/meです。 Facebookアプリへ

  5. 追加Webクライアントは、製品のFacebookアプリページシミュレータ

  6. を有効に製品を追加し、有効なOAuthのリダイレクトのURIに入力された私のサーバーでFacebookログインを追加します。

  7. 今デバイスから試してみると、無効なハッシュに関するエラーが表示されます。あなたが他のデバイス(PC)で

    からAPKをビルドする場合

Androidのキーハッシュが変更されますので、これができることが示唆されたtheseの答えの一つで

私がコードネーム1のクラウドビルドを使用しているので、事実は正しいです。私は以下のガイドに従った: Facebook Login - Codename OneSocial Chat Part 3 - Codename One 答えを見つけることができませんでした。しかし、自分のサーバーでFacebookの認証に関連するすべての設定を行うにはどうすればいいですか?私は実際に動作する簡単なステップバイステップアプローチを探しています。

答えて

0

異なるコンピュータは、そうでない場合は、暗号化とデジタル署名が機能しないのと同じSHA1が生成されます...あなたはstackoverflowの上で読んで、すべてのものを信じてはいけません!

MacとLinuxマシンでこれを試してみたところ、全く同じ結果が得られました。 Facebookは薄れていますが、SHA1ではJVMの違い(JCAのインストールなど)によって何かが発生する可能性があります。エラーログから実際のSHA1値を取得するためにデバイスを接続することもありますが、正しい値を取得すると、複数のサーバーを構築しても変更されることはありません。

関連する問題