设置Stormpath配置选项

时间:2015-09-06 17:54:39

标签: configuration stormpath

我正在尝试使用Stormpath自定义注册页面,我无法弄清楚为什么配置选项不起作用。 enableXXX和requireXXX可以正常工作,但是web:{...}中没有任何信息显示出来。我尝试重新排序选项,但这也不起作用。

具体来说,我想:

- 在/ signup注册用户而不是/ register。现在只有/ register工作。

- 我想在注册后将它们重定向到另一个网站。我随机将google.com放在那里,但在注册完成后我仍然会被重定向到“/”。

- 我想重新排序注册字段。我希望电子邮件成为第一个字段,但目前用户名是第一个。

这是app.js:

public class MainActivity extends FragmentActivity
        implements OnMapReadyCallback,
        GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener,
        LocationListener {

    private GoogleMap map;
    private LocationRequest mLocationRequest;
    private GoogleApiClient mGoogleApiClient;
    private Location mLastLocation;
    private Marker marker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onResume() {
        super.onResume();

        buildGoogleApiClient();
        mGoogleApiClient.connect();

        if (map == null) {
            SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.map);

            mapFragment.getMapAsync(this);
        }
    }

    @Override
    public void onMapReady(GoogleMap retMap) {

        map = retMap;

        setUpMap();

    }

    public void setUpMap(){

        map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        map.setMyLocationEnabled(true);
    }

    @Override
    protected void onPause(){
        super.onPause();
        if (mGoogleApiClient != null) {
            LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
        }
    }

    protected synchronized void buildGoogleApiClient() {
        Toast.makeText(this, "buildGoogleApiClient", Toast.LENGTH_SHORT).show();
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();
    }

    @Override
    public void onConnected(Bundle bundle) {
        Toast.makeText(this,"onConnected",Toast.LENGTH_SHORT).show();

        mLocationRequest = new LocationRequest();
        mLocationRequest.setInterval(1000);
        mLocationRequest.setFastestInterval(1000);
        mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);

        //mLocationRequest.setSmallestDisplacement(0.1F);

        LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
    }

    @Override
    public void onConnectionSuspended(int i) {
        Toast.makeText(this,"onConnectionSuspended",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {
        Toast.makeText(this,"onConnectionFailed",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onLocationChanged(Location location) {
        mLastLocation = location;

        //remove previous current location Marker
        if (marker != null){
            marker.remove();
        }

        double dLatitude = mLastLocation.getLatitude();
        double dLongitude = mLastLocation.getLongitude();
        marker = map.addMarker(new MarkerOptions().position(new LatLng(dLatitude, dLongitude))
                .title("My Location").icon(BitmapDescriptorFactory
                        .defaultMarker(BitmapDescriptorFactory.HUE_RED)));
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(dLatitude, dLongitude), 8));

    }

}

其他可能相关的信息:

- 该网站托管在Heroku上,但我没有使用Stormpath插件,因为我无法使用它。

- 我在Mac上。

我已经被困在这几天了,我一直无法弄清楚我做错了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题可能是这样的:我们最近发布了这个库的新版本,它有新的配置选项,看来你正在使用我们的OLD文档作为参考。

这是您想要做的事情:

更新到最新的express-stormpath版本。然后使用下面的代码:(我将您的示例转换为使用最新版本):

app.use(stormpath.init(app, {
  client: {
    apiKey: {
      file: process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'] + '~removed'
    }
  },
  application: {
    href: '~removed',
  },
  web: {
    register: {
      enabled: true,
      uri: '/signup',
      nextUri: 'http://google.com',  // don't send them here =)
      fields: {
        username: {
          enabled: true,
          required: true
        },
        givenName: {
          enabled: false,
          required: false
        },
        surname: {
          enabled: false,
          required: false
        },
        passwordConfirm: {
          enabled: true,
          required: true
        }
      },
      fieldOrder: ['username', 'email', 'password', 'passwordConfirm']
    }
  },
  website: true,
  api: true
}));